Wie funktioniert GitOps mit ArgoCD & Kubernetes?

·
3 minute read

Kubernetes ist der de facto Standard, wenn es um die Orchestrierung von Containern in einer Cloud-Umgebung geht. Seit Google die Plattform 2014 erstmalig der Öffentlichkeit vorgestellt hat, hat sich ein florierendes Ökosystem um Kubernetes gebildet. Durch Jahre der Weiterentwicklung und Praxisanwendung haben sich Best Practices für die Verwendung von Kubernetes im Enterprise-Segment herauskristallisiert.

Um Applikationen und Container-Workloads in Kubernetes zu betreiben, muss das Cluster mit sogenannten Manifesten gefüttert werden, die den gewünschten Zustand eines Workloads beschreiben. Dabei handelt es sich um Dateien im YAML-Format, die einen gewünschten Zustand („desired state„) definieren. Die Aufgabe von Kubernetes ist es anschließend, den im Manifest definierten desired state herzustellen, also beispielsweise eine bestimmte Anzahl von Kopien einer Applikation gleichzeitig zu starten, um ein hochverfügbares Deployment zu erreichen.

Anwender, Kubernetes-Administratoren und DevOps-Teams stehen regelmäßig vor der Herausforderung, YAML-Manifeste zu verwalten und das Kubernetes-Cluster über geänderte Manifeste zu informieren. Anstatt die Manifeste über mehrere Teams zu verteilen, hat sich mit der Zeit ein Ansatz etabliert, der als GitOps bekannt wurde. Der Begriff setzt sich aus dem Namen des bekannten Versionskontrollsystems „Git“ und „Operations“ zusammen.

Der GitOps-Ansatz verfolgt dabei eine sehr einfache Grundlage: Alle YAML-Manifeste, die zur Definition eines desired state für Kubernetes genutzt werden, werden zentral in einem Git-Repository verwaltet. Wenn beispielsweise beim Deployment einer neuen Version einer Applikation das Image-Tag des verwendeten Containers geändert werden muss, wird diese Änderung im Git-Repository durchgeführt, anstatt direkt auf dem Computer des Anwenders bearbeitet und an das Cluster gesendet zu werden.

Die Verwaltung aller Manifeste (oder auch Helm Charts bzw. Helm Values) in einem Git-Repository bietet den entscheidenden Vorteil, dass alle Änderungen an der Infrastruktur durch die Versionierung in Git transparent nachvollziehbar sind. Dadurch können beispielsweise fehlerbehaftete Änderungen problemlos rückgängig gemacht oder die Urheberschaft einzelner Anpassungen transparent dargestellt werden. Ein gern genutztes Feature ist zudem die Möglichkeit, Änderungen an der Infrastruktur in Form von Änderungen an den Manifesten über Pull Requests mit dem Vier-Augen-Prinzip zu prüfen und dadurch im Vorfeld zu autorisieren.

ArgoCD ist ein GitOps-Tool für Kubernetes-Cluster. Es bildet das Bindeglied zwischen dem Cluster und dem Git-Repository mit den Manifesten für Applikationen und Workloads. Vereinfacht dargestellt, prüft ArgoCD in festgelegten Intervallen definierte Git-Repositories auf Änderungen und vergleicht die dort hinterlegten Manifeste mit den auf dem Kubernetes-Cluster hinterlegten Manifesten. Stellt ArgoCD eine Abweichung fest – völlig egal, ob durch Änderung von Manifesten im Git-Repository oder weil ein Mitarbeiter eine händische Änderung an den Manifesten im Cluster durchgeführt hat – bietet es seinen Anwendern die Möglichkeit, wieder den im Git-Repository definierten Zustand herzustellen. Und das mit nur einem Klick.

Die Nutzung von ArgoCD führt dazu, dass die Anzahl der berechtigten Administratoren, die unmittelbar auf das Kubernetes-Cluster zugreifen dürfen, reduziert werden kann. Verantwortlichen Teams kann stattdessen Zugriff auf ein Git-Repository eingeräumt werden, in dem die jeweiligen Manifeste versioniert werden. ArgoCD arbeitet dabei völlig unabhängig von der eingesetzten Git-Plattform: GitHub, GitLab, Gitea und alle anderen Git-kompatiblen Collaboration-Tools werden problemlos unterstützt.

Für die Nutzung in automatisierten CI/CD-Pipelines bietet ArgoCD zudem die Möglichkeit der automatischen Synchronisierung. Erkennt die Software Änderungen im überwachten Git-Repository, werden diese Änderungen sofort auf dem Cluster angewendet. All diese Funktionen werden in einer übersichtlichen Web-UI bereitgestellt.

servinga unterstützt Sie gerne dabei zu verstehen, wie ArgoCD den Deployment-Prozess Ihrer Anwendungen in Ihrem Kubernetes-Cluster signifikant verbessern kann. Für Managed Kubernetes Kunden bieten wir zudem die Möglichkeit, ein eigenes Managed ArgoCD als zusätzlichen Service zu buchen. Mit diesem Angebot kümmert sich das Team von servinga, bestehend aus CAPA-zertifizierten (Certified Argo Project Associate) Experten, um die Verwaltung und Aktualisierung Ihrer ArgoCD-Instanz. Wir stehen Ihnen für alle Fragen rund um die Nutzung von ArgoCD zur Verfügung.