Deploying XMiDT With Kubernetes
Kubernetes
Make sure you have a Kubernetes cluster ready. You can either use:
In order to deploy to Kubernetes (k8s), you need to setup kubectl to talk to your cluster.
Prerequisites
xmidt cloud components are deployed using a helm chart. Helm charts enables us to describe dependencies to 3rd party services like Consul or Prometheus. Make sure helm >= v3.0.0-beta.3 is installed on your system. helm-quickstart
If you need to make customisation (e.g. because of unique characteristics of your k8s instance):
ship is recommended
Getting Started
Use helm to render the chart to rendered.yaml:
helm template xmidt-cloud ./deploy/kubernetes/helm/xmidt-cloud/ > rendered.yaml
Now you can deploy the rendered chart to your k8s cluster:
kubectl apply -f rendered.yaml
Check if all pods are running (scytale might need a couple of restarts as it depends on consul):
kubectl get all
--
pod/caduceus-0 1/1 Running 0 5d
pod/petasos-0 1/1 Running 0 5d
pod/prometheus-0 1/1 Running 0 5d
pod/rdkb-simulator-0 1/1 Running 0 5d
pod/scytale-0 1/1 Running 4 5d
pod/talaria-0 1/1 Running 0 5d
pod/tr1d1um-0 1/1 Running 0 5d
pod/xmidt-cloud-consul-0 1/1 Running 0 5d
pod/xmidt-cloud-consul-1 1/1 Running 0 5d
pod/xmidt-cloud-consul-2 1/1 Running 0 5d
To get the ports for tr1d1um and petasos use:
kubectl get all | grep 'service/tr1d1um-nodeport\|service/petasos-nodeport'
--
service/petasos-nodeport NodePort 10.247.241.180 <none> 6400:32659/TCP 3m
service/tr1d1um-nodeport NodePort 10.247.63.209 <none> 6100:31425/TCP
It means you can access tr1d1um on port 31425 and petasos on port 32659 on each node of your cluster.
Delete
You can delete your deployment with:
kubectl delete -f rendered.yaml
Updating this chart
If you make changes to a chart in a child reposiroties like talaria, etc. you can use the Makefile in helm to update this chart to the newest version.
cd helm
make update-latest
It will download all child charts and package them into xmidt-cloud/charts
FAQ
- Consul pods are not running
Consul depends on a
PerstentVolumeClaim, make sure your k8s instance supports this.
You may also have to add annotations to thePerstentVolumeClaimsection. If this is the case use ship to customize the xmidt helm chart.