Minikube is local Kubernetes, focusing on making it easy to learn and develop for Kubernetes. To install Minikube refer to the official site.
- Start minikube:
foo@bar:~$ minikube start
- Start the consumer and provider configmaps:
Consumer Data APP configmap
foo@bar:~$ kubectl apply -f https://raw.githubusercontent.com/Engineering-Research-and-Development/true-connector/main/kubernetes/be-dataapp-consumer-configmap.yaml
expected result:
configmap/be-dataapp-consumer-configmap created
Provider Data APP configmap
foo@bar:~$ kubectl apply -f https://raw.githubusercontent.com/Engineering-Research-and-Development/true-connector/main/kubernetes/be-dataapp-provider-configmap.yaml
expected result:
configmap/be-dataapp-provider-configmap created
Consumer Execution Core Container configmap
foo@bar:~$ kubectl apply -f https://raw.githubusercontent.com/Engineering-Research-and-Development/true-connector/main/kubernetes/ecc-consumer-configmap-v.2.yaml
expected result:
configmap/ecc-consumer-configmap created
Provider Execution Core Container configmap
foo@bar:~$ kubectl apply -f https://raw.githubusercontent.com/Engineering-Research-and-Development/true-connector/main/kubernetes/ecc-provider-configmap-v.2.yaml
expected result:
configmap/ecc-provider-configmap created
- Start the certificates configmap:
Inside this configmap are present ssl-server.jks and truststoreEcc.jks.
foo@bar:~$ kubectl apply -f https://raw.githubusercontent.com/Engineering-Research-and-Development/true-connector/main/kubernetes/ca-pemstore.yaml
expected result:
configmap/ca-pemstore configured
- Start the consumer and provider pods:
Counsumer pod
foo@bar:~$ kubectl apply -f https://raw.githubusercontent.com/Engineering-Research-and-Development/true-connector/main/kubernetes/consumer-compiled-v-0.3.yaml
expected result:
service/tc-consumer created
persistentvolumeclaim/be-dataapp-consumer-claim0 created
persistentvolumeclaim/be-dataapp-consumer-claim1 created
persistentvolumeclaim/be-dataapp-consumer-claim2 created
persistentvolumeclaim/ecc-consumer-claim0 created
persistentvolumeclaim/ecc-consumer-claim1 created
deployment.apps/tc-consumer created
Provider pod
foo@bar:~$ kubectl apply -f https://raw.githubusercontent.com/Engineering-Research-and-Development/true-connector/main/kubernetes/provider-compiled-v-0.3.yaml
expected result:
service/tc-provider created
persistentvolumeclaim/be-dataapp-provider-claim0 created
persistentvolumeclaim/be-dataapp-provider-claim1 created
persistentvolumeclaim/be-dataapp-provider-claim2 created
persistentvolumeclaim/ecc-provider-claim0 created
persistentvolumeclaim/ecc-provider-claim1 created
deployment.apps/tc-provider created
- Verify that the pods start up correctly:
foo@bar:~$ kubectl get all
expected result:
NAME READY STATUS RESTARTS AGE
pod/tc-consumer-6cc848947f-8sntk 2/2 Running 0 115s
pod/tc-provider-656c4f4f7c-nrqml 2/2 Running 0 46s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 22d
service/tc-consumer LoadBalancer 10.99.69.138 <pending> 8091:32294/TCP,8890:32639/TCP,8087:30477/TCP,8085:31467/TCP,9001:30996/TCP,8887:32061/TCP,8888:31512/TCP 115s
service/tc-provider LoadBalancer 10.97.5.116 <pending> 8083:30392/TCP,9000:32497/TCP,8090:30782/TCP,8889:30036/TCP,8086:31100/TCP 46s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/tc-consumer 1/1 1 1 115s
deployment.apps/tc-provider 1/1 1 1 46s
NAME DESIRED CURRENT READY AGE
replicaset.apps/tc-consumer-6cc848947f 1 1 1 115s
replicaset.apps/tc-provider-656c4f4f7c 1 1 1 46s
To test the True Connector in minikube environment have to enable the tunnel. It creates a route to services deployed with type LoadBalancer and sets their Ingress to their ClusterIP. It must be run in a separate terminal window to keep the LoadBalancer running. Ctrl-C in the terminal can be used to terminate the process at which time the network routes will be cleaned up.
foo@bar:~$ minikube tunnel
expected result:
Status:
machine: minikube
pid: 1463064
route: 10.96.0.0/12 -> 192.168.49.2
minikube: Running
services: [tc-consumer, tc-provider]
errors:
minikube: no errors
router: no errors
loadbalancer emulator: no errors
Now the services tc-consumer and tc-provider have an EXTERNAL-IP. In fact:
foo@bar:~$ kubectl get services
expected result:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25d
tc-consumer LoadBalancer 10.99.69.138 10.99.69.138 8091:32294/TCP,8890:32639/TCP,8087:30477/TCP,8085:31467/TCP,9001:30996/TCP,8887:32061/TCP,8888:31512/TCP 2d23h
tc-provider LoadBalancer 10.97.5.116 10.97.5.116 8083:30392/TCP,9000:32497/TCP,8090:30782/TCP,8889:30036/TCP,8086:31100/TCP 2d23h
Test the true connector. Note that the ip in the request url is the tc-consumer EXTERNAL-IP. Note also the value of Forward-To property in the body is 'tc-provider'.
foo@bar:~$ curl -k --location 'https://10.99.69.138:8085/proxy' \
--header 'fizz: buzz' \
--header 'Content-Type: text/plain' \
--header 'Authorization: Basic Y29ubmVjdG9yOnBhc3N3b3Jk' \
--data '{ "multipart": "form", "Forward-To": "https://tc-provider:8889/data", "messageType": "ArtifactRequestMessage" , "requestedArtifact": "http://w3id.org/engrd/connector/artifact/1" , "payload" : { "catalog.offers.0.resourceEndpoints.path":"/pet2" } }'
expected result:
{"firstName":"John","lastName":"Doe","address":"591 Franklin Street, Pennsylvania","checksum":"ABC123 2023/03/27 13:44:56","dateOfBirth":"2023/03/27 13:44:56"}
Using these two changes you can try same request present in Postman collection which can be used to initiate requests that are most commonly used.
TRUEConnector.postman_collection\
TRUEConnector enviroment.postman_environment
This collection comes with predefined environments so be sure to also import environment file.