Kubectl und Helm: stabile Deployments mit Gitlab Actions
Mit Gitlab Actions deployen wir regelmäßig Applikationen in Kubernetes. Wir benutzen dafür entweder die kubectl mittels kubectl apply -f
oder nutzen ganze Helm Charts, die direkt mit helm upgrade --install
ausgerollt werden.
Vor kurzem haben wir wieder ein Kubernetes Cluster Upgrade vorgenommen und seitdem Probleme mit deployments gehabt. In den Github Actions haben wir dabei nur Fehler gesehen wie Error: UPGRADE FAILED: error validating "": error validating data: the server has asked for the client to provide credentials
- vorherige Tests mit kubectl get ns
haben allerdings ohne Probleme geklappt. Nach einigen Tests haben wir bemerkt, dass das Problem bei einem Mismatch zwischen der Kubernetes Version und der Helm sowie Kubectl Version ausgelöst wird.
Das Problem war schnell identifiziert: Helm und Kubectl-Versionen müssen zusammenpassen, um unsere Deployment-Pipeline stabil zu halten. Wir haben uns also daran gemacht, beide Versionen in unseren Gitlab Actions festzulegen.
Wir nutzen dafür folgende Steps:
- name: Set kubectl version
uses: azure/setup-kubectl@v3
with:
version: v1.25.2
- name: Set helm version
uses: azure/setup-helm@v3
with:
version: 'v3.10.0'
- name: Set Kubernetes Context
uses: azure/k8s-set-context@v3
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBE_CONFIG }}
Die drei Github Actions von Azure setzen dabei die Versionen von helm und der Kubectl und konfigurieren den Kubernetes Context anschließend mittels eines Github Secrets.
So funktioniert unsere Deployment Pipeline wieder stabil.