GitOps ist eine Softwareentwicklungs- und Betriebsmethodik, die Git als Wahrheitssource für Bereitstellungsprofile verwendet. Sie beinhaltet das Speichern des gewünschten Zustands einer Anwendung oder Infrastruktur in einem Git-Repository und die Verwaltung und Bereitstellung von Änderungen mithilfe von Git-basierten Workflows. Zwei beliebte Open-Source-Tools, die Organisationen dabei unterstützen, GitOps zur Verwaltung ihrer Kubernetes-Anwendungen einzusetzen, sind Flux und Argo CD. In diesem Artikel werden wir diese Tools näher betrachten, ihre Vor- und Nachteile sowie die Einrichtung erläutern. Lesen Sie auch DZone’s zugehörige Anleitung zum Automatisieren von CI/CD-Pipelines mit Jenkins und Kubernetes.
Gängige Anwendungsfälle für Flux und Argo CD
Flux
- Continuous Delivery: Flux kann zur Automatisierung des Bereitstellungspipelines verwendet werden und stellt sicher, dass Änderungen sofort nach dem Pushen in das Git-Repository automatisch bereitgestellt werden.
- Konfigurationsmanagement: Flux ermöglicht es Ihnen, die Konfiguration Ihrer Anwendung als Code zu speichern und zu verwalten, was die Versionskontrolle und Verfolgung von Änderungen erleichtert.
- Unveränderliche Infrastruktur: Flux unterstützt einen Ansatz der unveränderlichen Infrastruktur, bei dem Änderungen nur über das Git-Repository und nicht durch manuelles Eingreifen im Cluster vorgenommen werden.
- Blue-Green-Bereitstellungen: Flux unterstützt Blue-Green-Bereitstellungen, bei denen eine neue Version einer Anwendung neben der bestehenden Version bereitgestellt wird und der Datenverkehr schrittweise zur neuen Version verschoben wird.
Argo CD
- Kontinuierliche Bereitstellung: Argo CD kann zur Automatisierung des Bereitstellungsprozesses verwendet werden, um sicherzustellen, dass Anwendungen immer auf dem neuesten Stand mit den aktuellsten Änderungen aus dem Git-Repository sind.
- Anwendungspromotion: Argo CD unterstützt die Anwendungspromotion, bei der Anwendungen von einer Umgebung in eine andere verschoben werden können. Zum Beispiel von der Entwicklung in die Produktion.
- Mehrclustermanagement: Argo CD kann verwendet werden, um Anwendungen über mehrere Cluster hinweg zu verwalten, um sicherzustellen, dass der gewünschte Zustand der Anwendungen in allen Clustern konsistent ist.
- Rollback-Management: Argo CD bietet Rollback-Fähigkeiten, die das Zurücksetzen von Änderungen im Falle von Fehlern erleichtern.
Die Wahl zwischen den beiden Tools hängt von den spezifischen Anforderungen der Organisation und der Anwendung ab, aber beide Tools bieten einen GitOps-Ansatz zur Vereinfachung des Bereitstellungsprozesses und zur Reduzierung des Risikos von manuellen Fehlern. Beide haben ihre eigenen Vor- und Nachteile, und in diesem Artikel werden wir uns ansehen, was sie sind und wie man sie einrichtet.
Was ist Flux?
Flux ist ein GitOps-Tool, das die automatische Bereitstellung von Anwendungen in Kubernetes ermöglicht. Es arbeitet, indem es kontinuierlich den Zustand eines Git-Repositories überwacht und Änderungen an einem Cluster anwendet. Flux integriert sich in verschiedene Git-Anbieter wie GitHub, GitLab und Bitbucket. Wenn Änderungen am Repository vorgenommen werden, erkennt Flux diese automatisch und aktualisiert den Cluster entsprechend. Zugehöriges Tutorial: So führen Sie die automatische Bereitstellung von Spring Boot-Anwendungen mit GitLab CI/CD durch.
Vorteile von Flux
- Automatisierte Bereitstellungen: Flux automatisier die Bereitstellungsprozesse, reduziert manuelle Fehler und entlastet Entwickler, sodass sie sich anderen Aufgaben widmen können.
- Git-basierter Workflow: Flux nutzt Git als Wahrheitssource, was die Verfolgung und Rücknahme von Änderungen erleichtert.
- Deklarative Konfiguration: Flux verwendet Kubernetes-Manifeste zur Definition des gewünschten Zustands eines Clusters, was die Verwaltung und Verfolgung von Änderungen erleichtert.
Nachteile von Flux
- Begrenzte Anpassungsfähigkeit: Flux unterstützt nur eine begrenzte Anzahl von Anpassungen, was möglicherweise nicht für alle Anwendungsfälle geeignet ist.
- Steile Lernkurve: Flux hat eine steile Lernkurve für neue Benutzer und erfordert ein profundes Verständnis von Kubernetes und Git.
So richten Sie Flux ein
Voraussetzungen
- A running Kubernetes cluster.
- Helm auf Ihrem lokalen Computer installiert.
- A Git repository for your application’s source code and Kubernetes manifests.
- Die Repository-URL und ein SSH-Schlüssel für das Git-Repository.
Schritt 1: Fügen Sie das Flux Helm Repository hinzu
Der erste Schritt besteht darin, das Flux Helm Repository auf Ihrem lokalen Computer hinzuzufügen. Führen Sie den folgenden Befehl aus, um das Repository hinzuzufügen:
helm repo add fluxcd https://charts.fluxcd.io
Schritt 2: Installieren Sie Flux
Nun, da das Flux Helm Repository hinzugefügt wurde, können Sie Flux im Cluster installieren. Führen Sie den folgenden Befehl aus, um Flux zu installieren:
helm upgrade -i flux fluxcd/flux \
--set [email protected]:/.git \
--set git.path= \
--set git.pollInterval=1m \
--set git.ssh.secretName=flux-git-ssh
Ersetzen Sie in dem obigen Befehl die Platzhalterwerte durch Ihre eigenen Git-Repository-Informationen. Der Parameter git.url
ist die URL des Git-Repositories, der Parameter git.path
ist der Pfad zum Verzeichnis, das die Kubernetes-Manifeste enthält, und der Parameter git.ssh.secretName
ist der Name des SSH-Geheimnisses, das den SSH-Schlüssel für das Repository enthält.
Schritt 3: Überprüfen Sie die Installation
Nachdem Sie den obigen Befehl ausgeführt haben, können Sie die Installation überprüfen, indem Sie den Status der Flux-Pods überprüfen. Führen Sie den folgenden Befehl aus, um die Pods anzuzeigen:
kubectl get pods -n <flux-namespace>
Wenn die Pods ausgeführt werden, wurde Flux erfolgreich installiert.
Schritt 4: Verbinden Sie Flux mit Ihrem Git-Repository
Der letzte Schritt besteht darin, Flux mit Ihrem Git-Repository zu verbinden. Führen Sie den folgenden Befehl aus, um einen SSH-Schlüssel zu generieren und einen Geheimnis zu erstellen:
ssh-keygen -t rsa -b 4096 -f id_rsa
kubectl create secret generic flux-git-ssh \
--from-file=id_rsa=./id_rsa --namespace=
In dem obigen Befehl ersetzen Sie den Platzhalter <flux-namespace>
durch den Namespace, in dem Flux installiert ist.
Fügen Sie nun den generierten öffentlichen Schlüssel als Bereitstellungsschlüssel in Ihrem Git-Repository hinzu.
Sie haben Flux erfolgreich mit Helm eingerichtet. Immer wenn Änderungen am Git-Repository vorgenommen werden, wird Flux diese erkennen und den Cluster entsprechend aktualisieren.
Zusammenfassend ist die Einrichtung von Flux mit Helm ein ziemlich einfacher Prozess. Indem Git als Quelle der Wahrheit verwendet und kontinuierlich den Zustand des Clusters überwacht wird, hilft Flux, den Bereitstellungsprozess zu vereinfachen und das Risiko von manuellen Fehlern zu reduzieren.
Was ist Argo CD?
Argo CD ist ein Open-Source-GitOps-Tool, das die automatische Bereitstellung von Anwendungen auf Kubernetes ermöglicht. Es erlaubt Entwicklern, ihre Anwendungen deklarativ zu verwalten und sorgt dafür, dass der gewünschte Zustand der Anwendungen mit dem tatsächlichen Zustand synchronisiert bleibt. Argo CD integriert sich in Git-Repositories und überwacht diese kontinuierlich auf Änderungen. Sobald Änderungen erkannt werden, wendet Argo CD diese auf den Cluster an, um sicherzustellen, dass die Anwendung immer auf dem neuesten Stand ist. Mit Argo CD können Organisationen ihren Bereitstellungsprozess automatisieren, das Risiko von manuellen Fehlern reduzieren und von Git’s Versionskontrollfähigkeiten profitieren. Argo CD bietet eine grafische Benutzeroberfläche und eine Kommandozeilenschnittstelle, was die Anwendungsverwaltung bei großen Skalierungen erleichtert.
Vorteile von Argo CD
- Fortgeschrittene Bereitstellungsfunktionen: Argo CD bietet fortgeschrittene Bereitstellungsfunktionen wie Roll-Updates und Canary-Bereitstellungen, was die Verwaltung komplexer Bereitstellungen erleichtert.
- Benutzerfreundliche Oberfläche: Argo CD bietet eine benutzerfreundliche Oberfläche, die die Verwaltung von Bereitstellungen insbesondere für nicht-technische Benutzer erleichtert.
- Anpassbar: Argo CD ermöglicht eine höhere Anpassungsfähigkeit, was es einfacher macht, das Tool auf spezifische Anwendungsfälle abzustimmen.
Nachteile von Argo CD
- Hoher Lernanstieg: Argo CD hat einen hohen Lernanstieg für neue Benutzer und erfordert ein profundes Verständnis von Kubernetes und Git.
- Komplexität: Argo CD verfügt über eine komplexere Architektur als Flux, was die Verwaltung und Fehlerbehebung erschweren kann.
So richten Sie Argo CD ein
Argo CD kann mithilfe von Helm, einem Paketmanager für Kubernetes, auf einem Kubernetes-Cluster installiert werden. In diesem Abschnitt führen wir Sie durch die Schritte zur Einrichtung von Argo CD mit Helm.
Voraussetzungen
- A running Kubernetes cluster.
- Helm auf Ihrem lokalen Computer installiert.
- A Git repository for your application’s source code and Kubernetes manifests.
Schritt 1: Fügen Sie das Argo CD Helm-Repository hinzu
Der erste Schritt besteht darin, das Argo CD Helm-Repository auf Ihrem lokalen Computer hinzuzufügen. Führen Sie den folgenden Befehl aus, um das Repository hinzuzufügen:
helm repo add argo https://argoproj.github.io/argo-cd
Schritt 2: Installieren Sie Argo CD
Nun, da das Argo CD Helm-Repository hinzugefügt wurde, können Sie Argo CD auf dem Cluster installieren. Führen Sie den folgenden Befehl aus, um Argo CD zu installieren:
helm upgrade -i argocd argo/argo-cd --set server.route.enabled=true
Schritt 3: Überprüfen Sie die Installation
Nachdem Sie den obigen Befehl ausgeführt haben, können Sie die Installation überprüfen, indem Sie den Status der Argo CD Pods überprüfen. Führen Sie den folgenden Befehl aus, um die Pods anzuzeigen:
kubectl get pods -n argocd
Wenn die Pods ausgeführt werden, wurde Argo CD erfolgreich installiert.
Schritt 4: Verbinden Sie Argo CD mit Ihrem Git-Repository
Der letzte Schritt besteht darin, Argo CD mit Ihrem Git-Repository zu verbinden. Argo CD bietet eine grafische Benutzeroberfläche, mit der Sie Anwendungen erstellen und mit Ihrem Git-Repository verbinden können.
Um auf die Argo CD-Schnittstelle zuzugreifen, führen Sie den folgenden Befehl aus, um die URL zu erhalten:
kubectl get routes -n argocd
Verwenden Sie die URL in einem Webbrowser, um auf die Argo CD-Schnittstelle zuzugreifen.
Sobald Sie im Interface sind, können Sie eine neue Anwendung erstellen, indem Sie die Git-Repository-URL und den Pfad zu den Kubernetes-Manifests angeben. Argo CD überwacht das Repository kontinuierlich auf Änderungen und wendet diese auf den Cluster an.
Sie haben nun erfolgreich Argo CD mit Helm eingerichtet.
Schlussfolgerung
Kubernetes und DevOps sind ein zentraler Bestandteil des Softwareentwicklungszyklus, und GitOps ist ein wertvoller Ansatz zur Automatisierung der Bereitstellung und Verwaltung von Anwendungen auf Kubernetes. Flux und Argo CD sind zwei beliebte GitOps-Tools, die eine einfache und effiziente Möglichkeit bieten, den Bereitstellungsprozess zu automatisieren, eine unveränderliche Infrastruktur durchzusetzen und Anwendungen auf konsistente und vorhersehbare Weise zu verwalten.
Flux konzentriert sich auf die Automatisierung des Bereitstellungspipelines und bietet Konfigurationsverwaltung als Code, während Argo CD eine komplette GitOps-Lösung bietet, einschließlich Funktionen wie Multi-Cluster-Management, Anwendungsverbreitung und Rollback-Verwaltung. Beide Tools haben ihre eigenen Stärken und Schwächen, und die Wahl zwischen den beiden hängt von den spezifischen Anforderungen der Organisation und der Anwendung ab.
Unabhängig vom verwendeten Tool bietet GitOps einen wertvollen Ansatz zur Vereinfachung des Bereitstellungsprozesses und zur Verringerung des Risikos von manuellen Fehlern. Indem die gewünschte Zustands der Anwendungen mit dem Git-Repository synchron gehalten wird, stellt GitOps sicher, dass Änderungen auf konsistente und vorhersehbare Weise vorgenommen werden, was zu einem zuverlässigeren und effizienteren Bereitstellungsprozess führt.