Was ist GitOps?
GitOps umfasst verschiedene Praktiken für die Verwaltung von Infrastruktur- und Anwendungskonfigurationen, mit denen bestehende Prozesse erweitert und der Anwendungs-Lifecycle verbessert werden soll.
GitOps nutzt Git-Repositories als Single Source of Truth für die Bereitstellung von Infrastructure as Code (IaC). IaC bezieht sich auf das Verwalten und Provisionieren von Infrastruktur durch Code statt durch manuelle Prozesse. Mit IaC werden Konfigurationsdateien erstellt, die Ihre gesamten Infrastrukturspezifikationen enthalten und sicherstellen, dass Sie stets dieselbe Umgebung provisionieren. IaC ist ein wichtiger Teil der Implementierung von DevOps-Praktiken und CI/CD (Continuous Integration/Continuous Delivery).
Auch bei GitOps müssen Sie den gewünschten Zustand des Systems deklarativ beschreiben. Die Verwendung von deklarativen Tools ermöglicht die Versionskontrolle sämtlicher Konfigurationsdateien sowie des gesamten Quellcodes in Git. Dabei werden sämtliche Codeänderungen nachverfolgt. So werden Updates vereinfacht und eine Versionskontrolle ermöglicht, falls ein Rollback erforderlich sein sollte.
GitOps bietet:
- Einen standardisierten Workflow für die Anwendungsentwicklung
- Mehr Sicherheit durch bessere Transparenz und Nachvollziehbarkeit
- Verbesserte Zuverlässigkeit mit Transparenz und Versionskontrolle durch Git
- Konsistenz in unterschiedlichen Clustern, Clouds und On-Premise-Umgebungen
GitOps, DevOps und Platform Engineering
GitOps und DevOps haben einige gemeinsame Prinzipien und Ziele. Bei DevOps geht es darum, einen kulturellen Wandel sowie eine bessere Zusammenarbeit zwischen Entwicklungs- und Operations-Teams zu ermöglichen.
GitOps bietet Ihnen Tools und ein Framework, mit dem Sie DevOps-Praktiken wie Zusammenarbeit, CI/CD und Versionskontrolle auf die Infrastrukturautomatisierung und das Deployment von Anwendungen sowie auf Platform Engineering-Praktiken wie interne Entwicklungsplattformen (IDPs) anwenden können.
Platform Engineering erweitert DevOps-Praktiken, indem es standardisierte Tools, Services und Workflows zur Verfügung stellt, mit denen Entwicklungsteams effizienter Softwarelösungen entwickeln können. Platform Engineering ist ein neuerer Begriff, der die Organisation interner Services und Ressourcen beschreibt. So können Entwicklungsteams Lösungen entwickeln, ohne die zugrundeliegenden Elemente direkt verwalten zu müssen.
Platform Engineering ist zu einer entscheidenden und ergänzenden Komponente geworden, um die Herausforderungen der unternehmensweiten Skalierung von DevOps zu bewältigen. Platform Engineering-Teams erstellen, warten und entwickeln die interne Entwicklungsplattform (IDP) eines Unternehmens kontinuierlich weiter und betreuen Entwicklungsteams als Kunden. Sie stellen gemeinsame, wiederverwendbare Tools, Services und Funktionen bereit, die einen echten Mehrwert bieten. Platform Engineers fungieren als Schnittstelle zwischen der Infrastruktur des Unternehmens, den für das Erstellen und Bereitstellen der Softwareanwendungen erforderlichen Backend-Services sowie den Entwicklungsteams, die einen reibungslosen Zugriff benötigen. Auch die Kernprinzipien von GitOps unterstützen das Platform Engineering, indem sie eine Single Source of Truth für Infrastrukturdefinitionen und Anwendungsentwicklungs-Lifecycles schaffen, die in Platform Engineering-Praktiken integriert werden kann und die Zusammenarbeit und Koordination zwischen Teams erleichtert.
Red Hat Ressourcen
Warum GitOps?
Da GitOps eine Prozessänderung ist, braucht es oft Zeit, bis sich die Teams nach der Einführung umgestellt haben. GitOps erfordert ein neues Maß an Zusammenarbeit und Kommunikation. Durch die Förderung einer Feedback-Kultur lassen sich derartige Herausforderungen abschwächen, können aber dennoch aufkommen.
Trotz dieser Herausforderungen greift GitOps die Philosophien und Ansätze auf, die Investitionen in eine DevOps-Kultur versprechen, und bietet ein Framework für die Umsetzung der Ergebnisse.
Durch die Verwendung der gleichen Git-basierten Workflows, mit denen Entwicklungsteams vertraut sind, erweitert GitOps die bestehenden Prozesse – von der Anwendungsentwicklung bis zur Bereitstellung, dem Lifecycle-Management von Anwendungen und der Infrastrukturkonfiguration. Entwicklungsteams können in den Code-Repositories arbeiten, die ihnen bereits vertraut sind, während Operations-Teams dieselben Tools und Techniken zum Verwalten der Infrastruktur einführen können. Änderungen während des gesamten Anwendungs-Lifecycles werden im Git Repository nachverfolgt und sind auditierbar.
Das Vornehmen von Änderungen über Git bedeutet für die Entwicklungsteams ein gewisses Maß an Freiheit: Sie können in ihrem eigenen Tempo programmieren, ohne darauf warten zu müssen, dass ihnen Ressourcen zugewiesen oder von den Operations-Teams genehmigt werden.
Durch die Transparenz von Änderungen können die Operations-Teams Probleme schnell nachvollziehen und reproduzieren, wodurch die Sicherheit insgesamt verbessert wird. Mit einem aktuellen Audit-Trail können Unternehmen das Risiko unerwünschter Änderungen reduzieren und diese korrigieren, bevor sie in die Produktion gehen.
Durch diese Codeänderungen von der Entwicklung bis hin zur Produktion erhalten Unternehmen mehr Agilität bei der Reaktion auf Veränderungen in der Geschäfts- und Wettbewerbssituation.
Beispiele für GitOps-Tools
Es gibt viele Tools, die zusammen genutzt ein GitOps-Framework bilden können, zum Beispiel Git-Repositories, Kubernetes, CI/CD-Tools (Continuous Integration/Continuous Delivery) und Konfigurationsmanagementtools. Um die passenden Tools zu wählen, sollten Entwicklungsteams zunächst ihre Anforderungen identifizieren und ermitteln, welche Features eine geeignete Lösung bieten. Im Folgenden finden Sie einige hilfreiche Tools.
CI-Tools
Continuous Integration (CI) bezieht sich auf die Praktik, Codeänderungen automatisch und regelmäßig in ein gemeinsames Quellcode-Repository zu integrieren. Im Zuge von Updates werden automatisierte Testschritte angestoßen, die für die Zuverlässigkeit der zusammengeführten Codeänderungen sorgen.
Tekton ist ein Kubernetes-natives Framework für die Entwicklung von CI/CD-Systemen. Es bietet Platform Engineers und Entwicklungsteams die Flexibilität, Best Practices und Standardisierung, die sie zum Entwickeln, Testen und Bereitstellen bei verschiedenen Cloud-Anbietern und auf mehreren On-Premise-Systemen brauchen.
Jenkins ist ein auf Java basierender Open Source-Automatisierungsserver. Mit diesem Tool können Entwicklungsteams ihre Änderungen einfacher integrieren, da es ein kontinuierliches Testen, Entwickeln und Bereitstellen von Projekten mit minimaler Einrichtung ermöglicht. Jenkins X, die Erweiterung des Jenkins IT-Ökosystems, unterstützt Automatisierungen von CI/CD-Pipelines in der Cloud.
CD-Tools
Bei Continuous Delivery und/oder Continuous Deployment (CD) handelt es sich um einen zweiteiligen Prozess, der die Integration, das Testen und die Bereitstellung der Codeänderungen umfasst. Continuous Delivery automatisiert das Release von validiertem Code in ein Repository, nachdem in der CI-Phase die Builds automatisiert und Unit- und Integrationstests durchgeführt wurden. Continuous Deployment ist eine Erweiterung der Continuous Delivery und kann sich auf die automatische Freigabe von Entwicklungsänderungen vom Repository zur Produktivphase beziehen, wo sie direkt von den Nutzenden verwendet werden können.
Argo CD ist ein deklaratives CD-Tool (Continuous Delivery) für Kubernetes. Entwicklungsteams können damit Anwendungen bereitstellen und verwalten, ohne über tiefgehende Kenntnisse in Kubernetes oder uneingeschränkten Zugriff auf das Kubernetes-System zu verfügen. Durch das Monitoring laufender Anwendungen stellt Argo CD sicher, dass Ihre Anwendungen mit Ihren gewünschten Zuständen synchronisiert bleiben.
Flux ist ein GitOps-Tool, das die Bereitstellung auf Kubernetes-Clustern automatisiert, indem es Cluster-Zustände mit Git-Repositories synchronisiert. Flux basiert auf einer Reihe von Kubernetes-API-Erweiterungen und unterstützt die Anwendungsentwicklung und Infrastrukturverwaltung.
Einstieg in GitOps
Für Ihren Einstieg in GitOps benötigen Sie eine Infrastruktur, die deklarativ gemanagt werden kann. Daher wird GitOps oft als Betriebsmodell für Kubernetes und die cloudnative Anwendungsentwicklung verwendet und kann Continuous Deployment für Kubernetes aktivieren.
Die Verwendung von Kubernetes ist aber für GitOps nicht zwingend erforderlich. GitOps lässt sich auch auf andere Infrastruktur- und Deployment-Pipelines anwenden. Mit GitOps lassen sich außerdem Entwicklungs-Pipelines erstellen, Anwendungen codieren, Konfigurationen managen, Kubernetes-Cluster provisionieren und Deployments auf Kubernetes oder Container Registries vornehmen.
Was ist ein GitOps-Workflow?
GitOps kann als Weiterentwicklung im Bereich IaC angesehen werden, bei der Git als Versionskontrollsystem für Infrastrukturkonfigurationen verwendet wird. IaC folgt beim Infrastrukturmanagement oft einem deklarativen Ansatz, indem der gewünschte Zustand des Systems definiert und der aktuelle Zustand nachverfolgt wird.
Wie auch bei IaC müssen Sie bei GitOps den gewünschten Zustand des Systems deklarativ beschreiben. Die Verwendung deklarativer Tools ermöglicht die Versionskontrolle Ihrer Konfigurationsdateien und Ihres gesamten Quellcodes in Git.
CI/CD-Pipelines werden normalerweise von einem externen Event ausgelöst, beispielsweise wenn Code per Push in ein Repository verschoben wird. In einem GitOps-Workflow erfolgen Änderungen über Pull-Anfragen, die den Zustand im Git-Repository ändern.
Um ein neues Release mit einem GitOps-Workflow einzuführen, wird in Git eine Pull-Anfrage gestellt, die eine Änderung am deklarierten Zustand des Clusters vornimmt. Der GitOps-Operator erfasst den Commit und holt sich die neue Deklaration des Zustands per Pull von Git.
Sobald die Änderungen genehmigt und zusammengeführt wurden, werden sie automatisch auf die Live-Infrastruktur angewendet. Entwicklungsteams können weiterhin ihre Standard-Workflows und CI/CD-Praktiken verwenden, wobei die GitOps-Engine sich um das CD kümmert, das unabhängig oder als Teil einer orchestrierten CI-Lösung ablaufen kann.
Wird GitOps mit Kubernetes verwendet, ist der Operator oft ein Kubernetes-Operator. Der Operator vergleicht den gewünschten Zustand im Repository mit dem aktuellen Zustand der bereitgestellten Infrastruktur. Wenn sich der aktuelle Zustand von dem unterscheidet, was sich im Repository befindet, aktualisiert der Operator die Infrastruktur und Anwendungen.
Beobachtbarkeit ist ein wichtiges Konzept in GitOps und bezieht sich auf die Systeme, die sich beobachten lassen. Durch die Beobachtbarkeit in GitOps können Sie sicherstellen, dass der gewünschte Zustand und der beobachtete Zustand (oder der aktuelle Zustand) übereinstimmen. GitOps bietet Transparenz zu bereitgestellten Ressourcen, dient aber nicht als allgemeines Monitoring-Tool. Mit den umfassenden Tools von Red Hat® OpenShift® Observability hingegen lassen sich solche Einschränkungen überwinden. Die Lösung nutzt Metriken, Protokolle, Traces und Events, um Feedbackschleifen zwischen Anwendungssystemen und Git-Repositories einzurichten. Zusammen können GitOps und OpenShift Observability Unternehmen daher mithilfe von Monitoring, Analysen und Problembehebung hilfreiche Erkenntnisse zu ihren Anwendungssystemen bereitstellen.
Pull-Anfragen und ein Versionskontrollsystem wie Git sorgen für Transparenz im Deployment-Prozess. So können Sie die Änderungen, die am System vorgenommen wurden, sehen und nachverfolgen, erhalten einen Audit-Trail und können, wenn nötig, Änderungen per Rollback wieder rückgängig machen.
GitOps-Workflows können die Produktivität und Geschwindigkeit von Entwicklung und Deployments erhöhen und gleichzeitig für stabilere und zuverlässigere Systeme sorgen.
Wie Red Hat GitOps unterstützt
Red Hat bietet eine Reihe an Produkten, die Ihren GitOps-Workflow unterstützen.Red Hat OpenShift ist eine einheitliche Anwendungsplattform, die sich nach GitOps-Prinzipien konfigurieren und verwalten lässt. Dadurch sorgt sie für Konsistenz in Ihren verschiedenen Kubernetes-Clustern und Entwicklungs-Lifecyles. Red Hat OpenShift konsolidiert die Administration und das Management von Anwendungen in On-Premise- und Public Cloud-Ressourcen, um:
- Zu überprüfen, ob die Cluster ähnliche Zustände aufweisen (Konfigurationen, Überwachung, Storage), wodurch die Anwendungsbeschränkungen bereits in einem frühen Stadium des Entwicklungszyklus bekannt sind
- Ein Rollback von Codeänderungen in mehreren Clustern durchzuführen, indem die Cluster in einem bekannten Status wiederhergestellt werden
- Eine an Git übermittelte Änderung in mehreren Red Hat OpenShift Clustern zu implementieren
- Konfigurationen mit Vorlagen in der Hybrid Cloud zu verknüpfen
Red Hat OpenShift GitOps ist ein Operator, der einen Workflow bereitstellt, mit dem Git-Repositories, CI/CD-Tools (Continuous Integration/Continuous Delivery) und Kubernetes integriert werden. So können Sie eine schnellere, skalierbare Softwareentwicklung mit mehr Sicherheit erreichen, ohne dabei Abstriche bei der Qualität machen zu müssen. Damit können Sie deklarative Git-gesteuerte CD-Workflows erstellen und direkt in Ihre Anwendungsentwicklungsplattform integrieren. Traditionell würden Sie als CI/CD-Tool nur ein Tool wie Jenkins oder Tekton nutzen. Jetzt sind es aber 2 Tools. Sie können Jenkins oder Tekton für CI verwenden und die CD-Engine GitOps für CD. Red Hat arbeitet gemeinsam mit Open Source-Projekten wie Argo CD an der Implementierung eines Frameworks für GitOps. Installieren Sie den Red Hat OpenShift Operator und entwickeln Sie neue Tools mit Argo, um GitOps innerhalb bestehender Deployments von Red Hat OpenShift zu verwalten.
OpenShift GitOps ist für Cloud Services, selbst gemanagte Optionen und Edge Computing verfügbar. Mit gemanagten Cloud Services wie Red Hat OpenShift Service on AWS (ROSA), Microsoft Azure Red Hat OpenShift (ARO) und Red Hat OpenShift Dedicated (OSD) können Unternehmen ihre operative Effizienz steigern, sich wieder auf Innovationen konzentrieren und Anwendungen schnell entwickeln, bereitstellen und skalieren.
Selbst gemanagte Versionen von OpenShift wie Red Hat OpenShift Virtualization Engine bieten die Virtualisierungsfunktionen von Red Hat OpenShift, die zum Bereitstellen, Verwalten und Skalieren von virtuellen Maschinen (VMs) erforderlich sind. OpenShift GitOps unterstützt das automatisierte Deployment von VMs und ermöglicht in Kombination mit OpenShift Virtualization Engine die Migration und Verwaltung von VMs entsprechend der Virtualisierungsanforderungen von Nutzenden. Am Edge bietet der Red Hat Build von MicroShift die Leistungsfähigkeit und Skalierbarkeit von Kubernetes, wodurch Anwendungen nach einmaligem Programmieren direkt an ihrem Einsatzort ausgeführt werden können – nahe an Datenquellen oder Endbenutzenden.
Red Hat Advanced Cluster Management for Kubernetes bietet Multi Cluster-Management für den Lifecycle von Kubernetes-Clustern. Red Hat Advanced Cluster Management verwendet ein Subskriptions- und Channel-Framework sowie Platzierungsregeln, um Anwendungen automatisch in einem gewünschten Zustandsmodell in mehreren Clustern bereitzustellen. Advanced Cluster Management for Kubernetes verwendet OpenShift GitOps als GitOps-Engine. Mit den Features dieser Lösung können Unternehmen nicht nur Anwendungen, Argo-Instanzen und Konfigurationen von GitOps-Clustern verwalten, sondern darüber hinaus auch Richtlinien bereitstellen.
Red Hat Ansible® Automation Platform übernimmt die Aufgabe, Ihre Systeme in den gewünschten Zustand zu versetzen, und zwar unabhängig vom aktuellen Status.Mit Ansible Playbooks, die in YAML programmiert sind, beschreiben Sie den gewünschten Zustand Ihrer Systeme, die normalerweise der Versionskontrolle unterliegen. Ansible kann sich im Rahmen Ihres GitOps-Workflows als äußerst nützliches Tool erweisen. Argo und GitOps nutzen nur Kubernetes. Ansible kann daher für die Automatisierung außerhalb von Kubernetes genutzt werden, insbesondere für unumgängliche Maßnahmen. Durch die Integration von Red Hat Advanced Cluster Management, Red Hat OpenShift GitOps und Red Hat Ansible Automation Platform können DevOps-Teams Konfigurationen in großem Umfang verwalten und pflegen, um CI/CD-Pipelines zu verbessern.
Der offizielle Red Hat Blog
Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.