8.1 Was ist Argo CD
Inhalt
Argo CD
Argo CD ist ein Teil des Argo Projects und gehört zur Cloud Native Computing Foundation (CNCF) . Das Projekt ist vollständig Open Source und hauptsächlich in Go implementiert.
Wie der Name schon sagt, kümmert sich Argo CD um den Continuous-Delivery-Aspekt von CI/CD. Die Continuous Integration wird von einem CI-Tool wie GitLab CI/CD, Jenkins, Tekton oder GitHub Actions übernommen. Der Kern von Argo CD besteht aus einem Kubernetes-Controller, der kontinuierlich den Live-Zustand (live-state) mit dem Soll-Zustand (desired-state) vergleicht. Der Live-Zustand wird über die Kubernetes-API abgegriffen, und der Soll-Zustand wird in Form von Manifesten in YAML oder JSON in einem Git-Repository persistiert. Argo CD hilft dabei, Abweichungen der Zustände aufzuzeigen, die Abweichungen darzustellen oder den Soll-Zustand autonom wiederherzustellen.
Argo CD wird auf einer Kubernetes-basierten Container-Plattform bereitgestellt und betrieben. Es ist möglich, mehrere Kubernetes- und OpenShift-Cluster an eine Argo CD-Instanz anzubinden.
GitOps ist eine Methode für das Kubernetes-Cluster-Management und die Applikationsbereitstellung. Es funktioniert, indem es Git als Single Source of Truth für deklarative Infrastruktur und Applikationen nutzt. Mit GitOps kann der Einsatz von Software-Agenten vor jeglicher Abweichung zwischen Git und dem, was in einem Cluster läuft, warnen. Wenn es einen Unterschied gibt, aktualisieren Kubernetes-Reconciler den Cluster automatisch oder führen je nach Fall einen Rollback durch. Mit Git im Zentrum Ihrer Delivery-Pipelines nutzen Entwickler vertraute Tools, um Pull Requests zu erstellen, was sowohl die Applikationsbereitstellung als auch operative Aufgaben in Kubernetes beschleunigt und vereinfacht.
Die Verwaltung von Kubernetes-Ressourcen mit einem GitOps-Ansatz bringt folgende Vorteile:
- Die Definition der Manifeste erfolgt deklarativ und ein Tool stellt den Abgleich zwischen Soll- und Live-Manifesten sicher. Die Unterschiede zwischen den gewünschten Konfigurationen und den tatsächlich angewendeten Manifesten sind jederzeit leicht ersichtlich.
- Rollbacks auf ältere Versionen sind mit
git revertoder über das verwendete GitOps-Tool problemlos möglich (vorausgesetzt, die Applikation unterstützt dies ebenfalls). - Manuelle Anpassungen direkt auf der Container-Plattform sind sofort sichtbar und können automatisch überschrieben werden (Self-Healing).
- Die Git-Commit-Historie ist gleichzeitig ein detailliertes Audit-Log.
- Die Entwickler beschreiben die Infrastruktur in bereits bekannten Formaten und Tools wie YAML und Git.
Argo CD folgt dem GitOps-Muster und nutzt Git-Repositories als Single Source of Truth, um den gewünschten Applikationszustand zu definieren.
Warnung
Argo CD bietet einen Mechanismus, um die Parameter von Argo CD-Applikationen zu überschreiben. Die Funktion The Argo CD parameter overrides dient hauptsächlich der Bequemlichkeit von Entwicklern und ist für den Einsatz in Dev/Test-Umgebungen gedacht, nicht für Produktionsumgebungen.
Viele betrachten diese Funktion als Anti-Pattern für GitOps. Verwenden Sie diese Funktion also nur, wenn keine andere Option verfügbar ist!
Kubernetes-Manifeste können auf verschiedene Arten spezifiziert werden:
- kustomize Applikationen
- helm Charts
- jsonnet Dateien
- Einfaches Verzeichnis mit YAML/JSON-Manifesten
- Jedes beliebige benutzerdefinierte Konfigurationsmanagement-Tool, das als Konfigurationsmanagement-Plugin eingerichtet ist
Argo CD automatisiert das Deployment der gewünschten Applikationszustände in den angegebenen Zielumgebungen. Applikations-Deployments können Updates von Branches oder Tags verfolgen oder an eine bestimmte Version von Manifesten bei einem Git-Commit gepinnt werden. Weitere Details zu den verschiedenen verfügbaren Tracking-Strategien finden Sie in der Dokumentation zu Tracking-Strategien.
Für einen kurzen 10-minütigen Überblick über Argo CD sehen Sie sich die Demo an, die beim Sig Apps Community Meeting präsentiert wurde:
Argo CD Architektur
Die Kernkomponenten von Argo CD sind der API-Server, der Repository-Server und der Application Controller.

Bild- und Komponentenbeschreibung Quelle: https://argo-cd.readthedocs.io/en/stable/
API-Server
Der API-Server ist ein gRPC/REST-Server, der die API bereitstellt, welche von der Web-UI, der CLI und den CI/CD-Systemen konsumiert wird. Er hat die folgenden Aufgaben:
- Applikationsmanagement und Statusberichte
- Aufrufen von Applikationsoperationen (z. B. Sync, Rollback, benutzerdefinierte Aktionen)
- Verwaltung von Repository- und Cluster-Anmeldeinformationen (gespeichert als K8s Secrets)
- Authentifizierung und Delegierung der Authentifizierung an externe Identity Provider
- Durchsetzung von RBAC
- Listener/Forwarder für Git-Webhook-Ereignisse
Repository-Server
Der Repository-Server ist ein interner Dienst, der einen lokalen Cache des Git-Repositories mit den Applikationsmanifesten pflegt. Er ist für die Generierung und Rückgabe der Kubernetes-Manifeste verantwortlich, wenn ihm die folgenden Eingaben zur Verfügung gestellt werden:
- Repository-URL
- Revision (Commit, Tag, Branch)
- Applikationspfad
- Templatespezifische Einstellungen: Parameter, Ksonnet-Umgebungen, Helm
values.yaml
Application Controller
Der Application Controller ist ein Kubernetes-Controller, der fortlaufend die laufenden Applikationen überwacht und den aktuellen Live-Zustand mit dem gewünschten Zielzustand (wie im Repo angegeben) vergleicht. Er erkennt den OutOfSync-Zustand von Applikationen und leitet optional Korrekturmassnahmen ein. Er ist für den Aufruf aller benutzerdefinierten Hooks für Lifecycle-Ereignisse (PreSync, Sync, PostSync) verantwortlich.
Argo CD Kernkonzepte
Folgende Kernkonzepte existieren in Argo CD:
- Cluster: Vorkonfigurierte Kubernetes-Cluster (einschliesslich OpenShift)
- Repositories : Vorkonfigurierte Git-Repositories, einschliesslich der Anmeldeinformationen (SSH, Benutzername/Passwort).
- Applikationen (Applications) : Eine Gruppe von Kubernetes-Ressourcen, abgebildet in einem Git-Repository. Gewöhnlich die Kubernetes-Ressourcen, die in einem Kubernetes-Namespace angewendet werden. Dargestellt als CRD .
- Projekte (Projects) : Eine logische Gruppierung von Argo CD-Applikationen. Auf Projektebene können verschiedene Restriktionen definiert werden. Nützlich, wenn mehrere Teams mit derselben Argo CD-Instanz arbeiten.