GitOps in der Software­entwicklung

Die Geschwindigkeit von Softwareentwicklung hat aufgrund der neuen Anforderungen durch die Digitale Transformation in den letzten Jahren immens zugenommen. Diese Entwicklung ist noch nicht am Ende, da kontinuierlich neue Ansätze gefunden werden, Prozesse effizienter zu gestalten und zu beschleunigen. GitOps ist ein neues Konzept, bei dem der Betrieb (Engl. „Operations“) von Software direkt durch das Entwicklungsteam ermöglicht wird, indem die Konfiguration von Cloud-Servern in der Versionsverwaltung Git vorgenommen wird.

GitOps vs. Continuous Delivery vs. DevOps

Wie es der Name GitOps vermuten lässt, besteht eine gewisse Verwandschaft zu DevOps. Kurz gesagt kann GitOps als ein Teilbereich von DevOps verstanden werden. Das Ziel von DevOps ist es, den Betrieb von Software durch Automatisierung und Continuous Delivery (CD), Konfigurationsmanagement, Containerisation, Orchestrierung, Monitoring und mehr nah an die Entwicklung heran zu bringen.

GitOps ist ein weiteres Werkzeug des DevOps-Werkzeugkastens für Konfigurationsmanagement und Infrastructure as Code (IaC). Die Grundidee von GitOps wird am deutlichsten im Vergleich zu Continuous Delivery.

Continuous-Delivery-Ansatz

Im klassischen Continuous Delivery wird der Sourcecode von den Entwicklern in der Sourcecodeverwaltung gespeichert. Von dort holt sich der CI-Server die Daten, führt den Build und Tests durch und legt die im Build erstellte Applikation (bestehend aus einem oder mehreren „Artefakten“, beispielsweise ein Docker© Image) auf einem Server (Artifact Repository oder Registry) ab.

Continuous-Delivery-Ansatz

Anschließend wird das Deployment der Applikation vom CI-Server vorgenommen. Die Konfiguration für das Deployment kann im CI-Server vorgenommen oder auch in Git abgelegt und versioniert werden.

GitOps-Ansatz

So wie der Continuous-Delivery-Ansatz setzt GitOps darauf, dass alle Informationen in der Sourcecodeverwaltung gepflegt werden. Der Unterschied jedoch ist, dass sich die Deployment Umgebung ihren Zustand direkt aus dem Git synchronisiert und nicht der CI-Server das Deployment übernimmt. Die Konfiguration muss im Git also versioniert sein. Da diese wie Code behandelt wird, spricht man von Infrastructure as Code.

GitOps-Ansatz

Durch diesen Ansatz entstehen mehrere Vorteile:

  • Konfigurationen werden als Code geschrieben (Configuration as Code – CaC). Dadurch werden Auditierungen und die Reproduzierbarkeit verbessert.
  • Mehr Sicherheit:
    • Cluster bekommen alle notwendigen Informationen aus Git. Dadurch wird weniger schreibender Zugriff auf die Cluster benötigt.
    • Der CI-Server benötigt keinen Zugriff auf den Cluster. Daher müssen dort keine Zugangsdaten hinterlegt werden.
  • Der Zugriff auf Git ist organisatorisch oft einfacher zu bekommen, als Zugriff auf einen API-Server (Stichwort: Firewall-Freischaltung).

GitOps und Kubernetes

Die Idee zu GitOps entstammt dem Kubernetes-Umfeld. Mittlerweile entstehen aber auch mehr und mehr Möglichkeiten, GitOps mit anderen Betriebsumgebungen (z.B. virtuellen Maschinen) zu benutzen. Die Umsetzung von GitOps erfolgt bei Kubernetes nach dem Operator-Pattern. Ein Operator ist eine Cloud-native Anwendung, die beim Betrieb von anderen Anwendungen unterstützt. Ein GitOps-Operator prüft regelmäßig oder „on push“ den im Git beschriebenen Wunsch-Zustand des Clusters gegen den tatsächlichen Zustand des Clusters. Bei Änderungen passt der GitOps Operator den Cluster entsprechend an. Die bekanntesten Implementierungen sind Flux und ArgoCD. Beide sind Projekte der Cloud Native Computing Foundation, unter deren Schirmherrschaft auch Kubernetes entwickelt wird.

GitOps bei Cloudogu

Bei Cloudogu setzen wir GitOps schon seit einiger Zeit zur Abbildung von internen Prozessen und im Rahmen der Infrastruktur des Backends unseres EcoSystems ein. Diese Erfahrung haben wir in unseren GitOps Playground einfließen lassen. Mit diesem können unsere Kunden unkompliziert erste Erfahrungen mit GitOps sammeln, bevor sie dies in ihrer eigene Infrastruktur implementieren. Wir haben diese Umgebung Open Source gemacht, damit auch Sie schnell und unkompliziert ausprobieren können, eine Infrastruktur mit mehreren Tools mittels GitOps auszurollen. Sollten Sie dazu Fragen haben, kontaktieren Sie uns gerne.

Cloudogu Consulting

GitOps Consulting

Sie haben Interesse am Thema GitOps und suchen nach Wegen es in Ihrem Unternehmen einsetzen? Melden Sie sich bei uns und unsere erfahrenen Experten helfen Ihnen.

Zum Cloudogu Consulting