GitOps ist für alle in greifbare Nähe gerückt: Denn mit Kubernetes lassen sich Deployments von Anwendungen und Infrastruktur-Komponenten rein über deklarative Konfigurationsdateien verwalten, die in einem Git-Repository liegen. Aber was spricht eigentlich für diesen Ansatz?
Mit GitOps wird die Umgebung per YAML-Konfigurationsdatei analog zur Anwendung über die Code-Pipeline bereitgestellt.
(Bild: Container Solutions)
Als Entwickler ist es problemlos möglich, YAML-Dateien in ein Git-Repository hochzuladen und dieses an eine Pipeline wie Jenkins oder GitLab anzuschließen. Diese nimmt dann jegliche Änderungen an einem ContainerCluster vor – et voilà: haben wir GitOps.
Damit das reibungslos funktioniert, müssen wir sicherstellen, dass ein Commit in das Git-Repository der einzige Weg ist, Änderungen am Cluster vorzunehmen. GitOps ist nicht Kubernetes-spezifisch, das gleiche Prinzip lässt sich auf jede Umgebung übertragen, die durch Terraform, CloudFormation oder andere deklarative Tools für das Konfigurationsmanagement verwaltet wird.
Mit GitOps wird die Umgebung per YAML-Konfigurationsdatei analog zur Anwendung über die Code-Pipeline bereitgestellt.
(Bild: Container Solutions)
Viele nutzen bereits entsprechende Ansätze, aber mittlerweile realisiert auch der Großteil der IT-Branche das volle Potenzial von GitOps. Damit kommen wir auch gleich zu den Gründen, warum GitOps so großartig ist:
1. Änderungshistorie für Umgebungen
Eine Anwendungsumgebung kann nur durch Updates der Konfiguration im zugehörigen Git-Repository verändert werden. Dies bedeutet eine komplette Historie der gewünschten Zustandsänderungen – einschließlich einer Aufzeichnung, wer diese Änderung durchgeführt hat und weshalb. Diese Historie kann außerdem auch durch die bereits genutzte und geschätzte Git-Benutzeroberfläche gelesen werden.
2. Rollback auf früheren Zustand
Sobald all unsere Änderungen als Git-Historie gespeichert werden, ist es einfach, eine Umgebung auf einem beliebigen früheren Zustand zurückzurollen. Durch das Rückgängigmachen von ein paar Commits können wir zu einem Zustand zurückkehren, der zuvor funktionierte.
3. Sichere Deployment-Prozesse
eBook „Ein kleiner GitOps-Guide“
(Bild: Dev-Insider)
E-Book zum Thema
Unser eBook „Ein kleiner GitOps-Guide“ befasst sich mit den Grundprinzipien von GitOps und zeigt einige Tools und Best Practices für die GitOps-Pipeline auf.
Sobald alle Änderungen am Cluster durch das GitOps-Repository gehen, benötigen menschliche und maschinelle Nutzer (sprich der Continuous-Integration- also CI-Prozess selbst) keinen Zugriff auf den Cluster mehr. Dies reduziert die Angriffsoberfläche immens, vor allem wenn dies bedeutet, den Netzzugriff auf die Kubernetes API zu reduzieren.
Der Deployment-Prozess, unabhängig von seiner Implementierung, kann innerhalb des Clusters laufen und die Konfiguration aus Git laden. Der Zugriff auf die API ist durch rollenbasierte Zugriffskontrolle (englisch RBAC, Role-Based Access Control) beschränkt. Das erhöht die Sicherheit des Clusters, da jegliche böswilligen Änderungen über den „allmächtigen“ API-Server verhindert werden.
4. Leichtgewichtige Zulassungsverfahren
Entwickler dürfen in vielen Firmen nicht die Produktionsumgebungen modifizieren. Was auch immer hinter dem Misstrauen und der Forderung nach einem Vier-Augen Prinzip steckt, GitOps liefert einen simplen Weg, dieses zu implementieren.
Die genaue Implementierung hängt vom genutzten Git-Server ab; aber grundsätzlich besteht die Strategie darin Entwicklern die Berechtigung zu erteilen, Pull-Requests an das Git-Repository zu stellen, während eine andere Gruppe das Recht auf Reviews und Merges hat. Die meisten Git-Server bieten eine exzellente Benutzeroberfläche, um Änderungen zu begutachten und Pull-Requests zu genehmigen – diese Lösung ist also nicht nur günstig, sondern auch sehr benutzerfreundlich.
5. Modulare Architektur
GitOps besteht aus drei Teilen: dem Git-Repository, dem Deployment-Prozess und wahrscheinlich einem Prozess, der Versionsupdates im Git-Repository automatisiert. Alle drei können sich weiterentwickeln oder unabhängig voneinander ersetzt werden.
Einerseits schreibt eine Komponente in das Git-Repository, andererseits liest eine Komponente davon. Die Struktur des Git-Repositories ist damit der Vertrag zwischen diesen Komponenten.
Da dies eine ziemlich lockere Verkopplung ist, können beide Seiten auf verschiedene Weisen mit unterschiedlichen Technologien implementiert werden.
6. Tool-unabhängige Architektur
Die Modularität aus Punkt 5 führt uns direkt zu der Tatsache, dass eine GitOps-Architektur die besten Tools auf flexible Weise zusammenführt. Quasi jeder bekannte Git-Server tut es für den Git-Teil – und Flux oder ArgoCD können sich derweil darum kümmern, das Repository und das Cluster zu synchronisieren.
JenkinsX wiederum ist ein Tool, das alle Teile dieses Prozesses abdecken kann. Das schließt auch die Erstellung von Git-Repositories und das Updaten zu neuen Versionen ein, sobald ein neues Docker Image gebaut wurde.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
7. Bestehendes Wissen nutzen
Durch die Nutzung von Git im Zentrum des Deployment-Prozesses kann man auf das bestehende Git-Know-how setzen, das die meisten Entwickler und IT-Mitarbeiter bereits haben. Es besteht keine Notwendigkeit, neue Tools einzuführen, um Deployment-Historien zu durchsuchen oder Commits zu implementieren. Alles passiert mithilfe von Tools, die jeder kennt.
8. Vergleich verschiedener Umgebungen
Wenn man von der Entwicklung über Akzeptanztests (englisch: User Acceptance Testing, UAT) bis hin zur Produktion eine ganze Reihe an Umgebungen einsetzt, kann es sehr aufwändig sein, all ihre Unterschiede im Auge zu behalten.
Dank deklarativer Konfigurationen in Git-Repositories ist der Vergleich nun so einfach wie zwischen einer Gruppe von YAML-Dateien. Es existieren sehr gute Tools, die eine entsprechende Umsetzung ermöglichen. Darüber hinaus ist das Erstellen einer neuen Umgebung von Grund auf äußerst einfach: man muss nur noch die angepassten YAML-Dateien in ein neues Repository kopieren.
9. Integrierte Backups
Da der Zustand der Umgebung in Git gespeichert ist, wird nie etwas verloren gehen, selbst wenn dem etcd-Speicher des Kubernetes-Clusters etwas passiert. So wird automatisch auch der Zustand des Clusters gesichert.
10. Änderungen wie bei Software testen
Man kann Änderungen, die eventuell den Cluster zerstören, auf die gleiche Weise testen wie man es mit Anwendungen tun würde. Man muss die Änderungen schlicht auf einen Branch schieben und durch eine CI-Pipeline laufen lassen. Das CI-Tool ist in der Lage, Tests auszuführen und den Status des Pull-Requests abhängig vom Ergebnis auf grün oder rot zu setzen.
Sobald alles getestet und überprüft ist, darf der Code auf den Masterbranch gemerged werden. Das klingt sehr unkompliziert, aber automatisierte Tests sind eine oftmals vernachlässigte Aufgabe in der Verwaltung von Infrastrukturen. GitOps macht das nicht leichter, aber man vertraut zumindest auf den bereits bekannten Git-Workflow, den man auch an anderen Stellen nutzt.
11. Hochverfügbare Deployment-Infrastruktur
Ádám Sándor
(Bild: Michelle Gienow)
Es ist wichtig, Deployment-Infrastrukturen dauerhaft aufrecht zu erhalten. Git-Server sind gewöhnlich schon auf eine replizierte, hochverfügbare Art und Weise aufgesetzt. Alle Entwickler benötigen die meiste Zeit einen Zugriff auf Quellcode, also ist der Gebrauch von Git als Deployment-Quelle keine zusätzliche Belastung für Git selbst.
* Ádám Sándor ist ein Cloud Native Architekt bei Container Solutions, einem Dienstleistungs- und Beratungsunternehmen mit Standorten in Europa, UK und Kanada.
E-Book zum Thema
Ein kleiner GitOps-Guide
eBook „Ein kleiner GitOps-Guide“
(Bild: Dev-Insider)
GitOps soll die Cloud-native Entwicklung containerisierter Anwendungen von Grund auf umkrempeln. Unser eBook „Ein kleiner GitOps-Guide“ befasst sich mit den Grundprinzipien von GitOps und zeigt einige Tools und Best Practices für die GitOps-Pipeline auf.