GitOps — Evolution von DevOps im Cloud Native Umfeld
  • WK IT GmbH
  • GitOps — Evolution von DevOps im Cloud Native Umfeld

GitOps — Evolution von DevOps im Cloud Native Umfeld

Eine Kernkompetenz der DevOps Kultur ist die Automatisierung mit dem Ziel, möglichst viele manuelle Entwicklungsprozesse zu automatisieren. Ein wesentlicher Teil davon ist die CI/CD-Pipeline. Allerdings geht Automatisierung weit über CI/CD hinaus und findet mit Infrastructure as Code (IaC) und GitOps weitere Mitspieler. Während wir uns mit IaC in einem späteren Blogpost befassen, soll es hier zunächst konkret um GitOps im Kubernetes Umfeld gehen.  

GitOps versteht sich als erweiterte Version des DevOps sowie der klassischen CI/CD-Pipeline. Der Automatisierungsgrad des Operation-Teils wird beim GitOps noch weiter erhöhtGitOps findet hauptsächlich im Kubernetes Umfeld für Cloud Native Applikationen Anwendung, kann aber auch anderweitig eingesetzt und mit einem vorgelagerten CI-System ergänzt werden. Durch die Verwendung des Git als Single Source of Truth, die zu jeder Zeit den aktuellen Stand des Clusters abbildet, existiert eine Historie über sämtliche ZustandsänderungenDiese Zustände von Kubernetes werden deklarativ durch yaml oder json Files beschrieben und in einem Git Repository hinterlegt. Der Anwendungscode selbst liegt verpackt in einem Containerimage in einer Container Registry. Dieses Vorgehen vereinfacht das Zurücksetzen des Systems auf einen früheren Zustand maßgeblich. 

Das Herzstück des GitOps Ansatzes ist der GitOps Operator. Dieser vergleicht in regelmäßigen Abständen den Ist-Zustand des Clusters mit dem Soll-Zustand des Git Repositories (Git Repo)Um neue Applikationen zu deployen oder Änderungen durchzuführen, muss nur das Repository geändert werden. Das Cluster wird daraufhin automatisch durch den Operator angepasst. 

Während beim CI/CD eine Push-basierte Pipeline verwendet wird, bei der das CI-System auch das Deployment übernimmt, wird beim GitOps auf ein Pull-basiertes Deployment gesetzt. Der Entwickler überträgt (push) den Code in das Git Repo. Der Zugriff des CI-Systems endet allerdings bereits an dieser Stelle. Vielmehr dient das Repository als Schnittstelle. Der Code sowie das Containerimage werden aus dem Git Repo bzw. Container Registry heruntergeladen (pull) und der GitOps Operator übernimmt das Verteilen der Anwendung in das Cluster.   

Dieses Vorgehen hat zwei wesentliche Vorteile. Die Anmeldeinformationen des Clusters müssen nicht mehr im CI-System bereitgestellt werden und fehlerhafte menschliche Interaktionen mit dem Cluster sind ausgeschlossen.

Die WK IT profitiert selbst von diesen Vorteilen, da wir sowohl das unternehmensinterne Cluster als auch unseren Managed Kubernetes Service, den WK Kubernetes Service (kurz WKS) mit GitOps betreuen. Im Rahmen des WKS übernehmen wir Implementierung, Pflege und Management des Kubernetes Clusters, während sich unsere Kunde voll und ganz auf die Entwicklung ihrer Cloud Native Anwendungen konzentrieren können. Mehr zum WKS verraten wir demnächst in einem weiteren Blogpost. 

Zurück