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 revert oder ü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.

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.

Architektur

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.
Zuletzt geändert April 15, 2026: add argocd lab (a030e66)