Kubectl und Helm: stabile Deployments mit Gitlab Actions

Jannik Zinkl
Jannik Zinkl
  • 2023-06-08
  • 2 mins
Blog Images

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.

Jannik Zinkl
Jannik Zinkl

Entrepreneur & Cloud Architect with a passion for Climate Tech