Das DevOps-Modell gewinnt zunehmend an Bedeutung, da die Verzahnung von Entwicklung und Betrieb viele Vorteile verspricht. Der GitOps-Ansatz ergänzt das DevOps-Vorgehen optimal durch ein automatisiertes Deployment. IT-Dienstleister Consol zeigt die Vorteile und skizziert einen typischen GitOps-Workflow.
GitOps steht für die Verbindung von Git, dem führenden Open-Source-System für die Versionsverwaltung, mit Operations. Durch die Speicherung von Infrastruktur-Code in Git-Repositories wird der Zielzustand eines Systems definiert. GitOps-Tools synchronisieren diesen Zustand stets zwischen Git-Repository und Zielsystem – etwa durch automatisierte Deployments nach Änderungen am Infrastruktur-Code. Wesentliche Schritte in der Softwareentwicklung und -bereitstellung werden dadurch automatisiert. Dies erweitert den DevOps-Ansatz entscheidend.
Vor Kurzem hat die GitOps Working Group, ein Projekt der CNCF (Cloud Native Computing Foundation) die konkreten Anforderungen für die GitOps-Nutzung spezifiziert (1). Zwei Punkte sind dabei vor allem wichtig. Erstens muss die Zielplattform deklarativ konfiguriert und verwaltet werden können. Daher wird GitOps vor allem als Betriebsmodell bei Kubernetes genutzt, der derzeit populärsten deklarativen Plattform. Zweitens ist es erforderlich, den gewünschten System- beziehungsweise Softwarezustand unveränderlich und versioniert mit Versionshistorie zu speichern.
Sind diese Voraussetzungen erfüllt, kann ein typischer GitOps-Workflow nach Consol folgendermaßen aussehen:
- Überführung von Anwendungsänderungen in einen speziellen Git-Branch und Erzeugung eines Pull-Requests
- Überprüfung und Genehmigung des Pull-Requests durch eine weitere Person
- Bau der Applikation und automatisiertes Testen der Änderungen
- Überführung des Container-Images in die Image-Registry (bei erfolgreichen Tests)
- Übertragung der Container-Image-Referenz in das Kubernetes-Deployment-Manifest und Aktualisierung des Manifests in Git
- Kontinuierliches Abrufen des Inhalts des Manifest-Repositories durch die GitOps-Anwendung und Überprüfen der Manifeste auf Änderungen
- Abfrage des aktualisierten Container-Images aus der Image-Registry
- Überführung der aktualisierten Manifeste und des Container-Images durch den GitOps-Prozess in das Zielsystem.
Ein solcher GitOps-Workflow bietet mehrere Vorteile. Dazu gehören die Erhöhung der Produktivität und Geschwindigkeit von Entwicklungen und Deployments sowie die Konzeption stabilerer und zuverlässigerer Systeme. Von Nutzen für das Operations-Team ist auch, dass alle Änderungen an den Zielsystemen nachvollziehbar sind und manuelle Eingriffe unterbunden werden können. Darüber hinaus vereinfacht GitOps auch ein Rollback, also das Zurücksetzen einer Umgebung auf einen früheren Zustand. Nicht zuletzt ist ein Unternehmen beim Einsatz von GitOps für den Continuous-Deployment-Prozess auch frei in der Wahl einer Continuous-Integration-
Ein GitOps-Workflow bietet mehrere Vorteile, wie beispielsweise die Konzeption stabilerer und zuverlässigerer Systeme. (Bildquelle: Consol)
„Die DevOps-Methodik spielt in der Entwicklung einer modernen Applikationslandschaft eine wichtige Rolle. Ein Schwerpunkt liegt dabei auf dem kulturellen Wandel und der engen Zusammenarbeit von Entwicklung und IT-Betrieb“, erklärt Sebastian Tiggelkamp, DevOps Engineer bei Consol. „Mit GitOps können Unternehmen hier noch einen Schritt weitergehen und Tools nutzen, die die Umsetzung der DevOps-Ziele entscheidend unterstützen – gerade im Hinblick auf eine effiziente und schnelle Entwicklung und Bereitstellung von Softwareprodukten.“