GitOps ist die Konfigurationsmethode, um alle App-Versionen und -Zustände auf beliebiger Hardware, in VPCs oder Docker-Swarm-Umgebungen in Ihrem Rechenzentrum konsistent zu halten und Rollbacks zu ermöglichen.
GitOps ist die Konfigurationsmethode, um alle App-Versionen und -Zustände auf beliebiger Hardware, in VPCs oder Docker-Swarm-Umgebungen in Ihrem Rechenzentrum konsistent zu halten und Rollbacks zu ermöglichen.
Bei herkömmlichen Deployments konnte es vorkommen, dass Version 1.20 eines Dashboards mit Version 1.19 der darunterliegenden API – mit Breaking Changes – kombiniert wurde. Mit GitOps wäre das nie passiert, da das Tool die Versionszustände der gesamten Anwendungsdomäne überwacht.
Dies ermöglicht Continuous Deployment: Werden die Image-Typen von Containern geändert, erkennt der Cluster dies und korrigiert sich automatisch in den richtigen Zustand.
Beispiel: Wenn Ihr Team ein neues Feature deployen muss, das mehr Ressourcen benötigt, sodass das Ansible Playbook oder die Kube-Resource-Definition angepasst werden muss, müssen die vier Änderungen des Ops-Teams nur in Git eingepflegt werden – der Watcher deployt dann entweder alle Änderungen oder gar keine. Nichts ist jemals halb funktionsfähig oder halb kaputt.
Continuous Delivery von Jez Humble ist ein empfehlenswertes Buch. Durch das informatische Konzept der Konvergenz werden Containerzustände autonom aufrechterhalten, sodass weder die Ops- noch die Dev-Seite des Teams je in einen unerwünschten Zustand gerät.
Container bringen ein Maß an Agilität mit sich, das in der Geschäftswelt bisher unbekannt war. Innerhalb von Sekunden können Administratoren Deployments für eine Vielzahl von Services ausrollen. Und wenn Skalierung gefragt ist, stehen Docker Swarm oder Kubernetes bereit.
Doch was passiert, wenn selbst ein standardisierter Container-Workflow mit den wachsenden Anforderungen des Unternehmens nicht mehr mithalten kann? Kaum eine Methode ist effizienter für das Deployment und die Skalierung eines Container-Clusters als Kubernetes. Und obwohl das stimmt, bedeutet es nicht, dass der Entwicklungszyklus nicht weiter verbessert werden kann.
GitOps ist eine Workflow-Methode, die – laut Priyanka Sharma, Director of Technical Evangelism bei GitLab – von „allen, die Infrastructure-as-Code erfolgreich umgesetzt haben, als wahre Schöpfer des GitOps-Konzepts" entwickelt wurde.
Was genau ist GitOps? Auf den ersten Blick ist es recht einfach. GitOps dreht sich darum, ein Versionskontrollsystem wie Git als zentrale Ablage für alle Informationen, Dokumentationen und den Code eines Kubernetes-Deployments zu nutzen und automatisierte Mechanismen einzusetzen, um Änderungen am Cluster auszurollen. Schaut man jedoch genauer hin, zeigt sich eine deutlich größere Komplexität.
GitOps bietet Entwicklern eine Möglichkeit, operative Workflows – insbesondere für Kubernetes – mithilfe von Git und dem eigenen Versionskontrollsystem zu verwalten, so Sharma. Derselbe Prozess, den sie für Code-Merges per Pull Requests oder Merge Requests nutzen, kann für Deployments auf Kubernetes verwendet werden.
„Für Teams, die DevOps praktizieren, kann dieser Ansatz sehr attraktiv sein, weil er den Workflow näher an den Entwickler bringt", sagte Sharma.
Dieser Ansatz bietet einige wesentliche Vorteile: Entwickler können die ihnen vertrauten Tools nutzen, um Code in die Produktion zu bringen. „Die Produktivität steigt sprunghaft und DevOps passiert wirklich", erklärte sie und ergänzte: „Das ist eine Kernphilosophie bei GitLab, wo alles MR-first ist."
Und da alles über das Versionskontrollsystem läuft, ist es für alle sichtbar und nachvollziehbar, so Sharma. „Es gibt einen Audit-Trail, die Möglichkeit, problematische Änderungen rückgängig zu machen, und letztlich eine einzige Quelle der Wahrheit über alles, was im System passiert – sowohl aus Softwareentwicklungs- als auch aus Infrastrukturperspektive."
Im Kern ist GitOps ein Betriebsmodell für Kubernetes und andere Cloud-Technologien. Was es von anderen Modellen unterscheidet, ist die Zentralisierung aller Prozessaspekte zu einem einzigen Pfad für die Verwaltung von Betrieb und Entwicklung.
„Eine der wichtigsten Funktionen von GitOps ist es, eine Gruppe von Systemänderungen korrekt anzuwenden und anschließend zu verifizieren", sagte Alexis Richardson, CEO und Gründer von Weaveworks, dem der Begriff „GitOps" weithin zugeschrieben wird. „Danach sollte GitOps Nutzern und Orchestratoren eine Benachrichtigung (Alert) ermöglichen, wenn eines der Systeme vom korrekten Zustand abgewichen ist, damit es wieder in den gewünschten Sollzustand (der in Git hinterlegt ist) überführt werden kann. In GitOps MÜSSEN wir kontinuierliche Beobachtung und Verifikation einsetzen, um App- und Cluster-Management zu ermöglichen."
Podcast-Interview mit Alexis Richardson und Stefan Prodan
Es ist komplex. Aber vereinfachen wir es.
Stellen Sie sich vor, jede einzelne Dokumentation, alle YAML-Dateien und jeder notwendige Code für Kubernetes befinden sich in einem einzigen Git-Repository. Mit Hilfe einiger Automatisierungstools kann jeder, der mit der Verwaltung dieses Kubernetes-Deployments beauftragt ist, einen Pull Request erstellen, den Code bearbeiten und einen Merge Request an dieses Git-Repository stellen.
„Wenn man nicht versteht, warum Kubernetes die Priorität ist, warum es asynchron ist, warum es ein Event-Stream ist … wenn man das alles nicht versteht und einfach nur die GitOps-Definition liest, sieht das irgendwie wie Magie aus", sagte Stefan Prodan, Weaveworks-Ingenieur.
Sobald der Merge Request abgeschlossen ist, erkennt der automatisierte GitOps-Operator die Änderung, ein weiterer Automatisierer (wie Flagger) erklärt die Änderungen als betriebsbereit, und die Änderung wird automatisch im Cluster deployt. Hier ein Beispiel, wie das ablaufen kann:
In diesem Workflow ist Automatisierung entscheidend, um alles mit einer Effizienz am Laufen zu halten, die mit rein manueller Verwaltung nicht erreichbar wäre.
In erster Linie macht GitOps Ihren Workflow deutlich effizienter. Darüber hinaus gestaltet es die SOC-2-Zertifizierung erheblich kostengünstiger. Und zum Thema Kosteneinsparung hat Weaveworks' Richardson folgendes zu sagen:
Stellen Sie sich eine Welt vor, in der jedes Deployment korrekt ist. Und wenn es nicht korrekt ist, schlägt das Deployment vollständig fehl, sodass Sie es erneut versuchen oder andere fundierte Entscheidungen treffen können. Stellen Sie sich vor, es ist korrekt, Sie wissen, dass es korrekt ist, und Sie können nach Hause gehen und werden später benachrichtigt, falls etwas schiefläuft. Das ist eine unglaubliche Kostenersparnis beim operativen Aufwand. Der Wechsel von einem unsicheren, halbzuverlässigen System zu einem grundlegend robusteren ist enorm.
Zusammenfassend bietet GitOps:
Services