ArgoCD: Die Referenz-Architektur für deklaratives GitOps auf Kubernetes
Fabian Peter 5 Minuten Lesezeit

ArgoCD: Die Referenz-Architektur für deklaratives GitOps auf Kubernetes

ArgoCD hat sich als der Industriestandard für Continuous Delivery in Kubernetes etabliert. Durch die Implementierung des GitOps-Paradigmas transformiert es die Infrastrukturverwaltung von imperativen Pipelines hin zu einer deklarativen Zustandsverwaltung. Dies ermöglicht automatisierte Synchronisierung („Self-Healing"), lückenlose Auditierbarkeit und eine strikte Trennung von CI (Continuous Integration) und CD (Continuous Delivery).
argocd gitops kubernetes continuous-delivery declarative-architecture drift-detection self-healing

TL;DR

ArgoCD hat sich als der Industriestandard für Continuous Delivery in Kubernetes etabliert. Durch die Implementierung des GitOps-Paradigmas transformiert es die Infrastrukturverwaltung von imperativen Pipelines hin zu einer deklarativen Zustandsverwaltung. Dies ermöglicht automatisierte Synchronisierung („Self-Healing"), lückenlose Auditierbarkeit und eine strikte Trennung von CI (Continuous Integration) und CD (Continuous Delivery).

1. Das Architektur-Prinzip: Pull statt Push

Traditionelle Deployment-Tools arbeiten „Push-basiert". Eine externe Pipeline (z.B. Jenkins oder GitLab CI) hat Zugriff auf den Cluster und führt Befehle aus, um Updates einzuspielen. Dies stellt ein Sicherheitsrisiko dar, da die CI-Server weitreichende Rechte im Cluster benötigen.

ArgoCD dreht dieses Modell um („Pull-Prinzip"). Der ArgoCD-Controller läuft innerhalb des Kubernetes-Clusters und überwacht verknüpfte Git-Repositories.

  1. Beobachtung: Der Controller vergleicht kontinuierlich den IST-Zustand im Cluster mit dem SOLL-Zustand im Git (Manifeste, Helm Charts, Kustomize).
  2. Synchronisierung: Sobald eine Änderung im Git erkannt wird (z.B. ein neues Image-Tag), wendet ArgoCD diese Änderung im Cluster an.

Da nur der Cluster Zugriff auf das Git-Repo benötigt (Read-Only), aber keine externen Tools Schreibrechte im Cluster haben, reduziert sich die Angriffsfläche drastisch.

2. Kern-Feature: Drift Detection und Self-Healing

Ein wesentliches Alleinstellungsmerkmal von ArgoCD ist die Fähigkeit, Abweichungen („Drift") zu erkennen, die nicht durch Git ausgelöst wurden.

Wenn ein Administrator manuell per kubectl eine Ressource ändert (z.B. das Speicherlimit eines Pods erhöht), entsteht eine Diskrepanz zur Git-Definition.

  • Drift Detection: ArgoCD markiert die Application sofort als OutOfSync.
  • Self-Healing: Ist die automatische Synchronisierung aktiviert, überschreibt ArgoCD die manuelle Änderung sofort wieder mit dem Zustand aus dem Git.

Dies erzwingt Disziplin: Git ist die einzige Quelle der Wahrheit (Single Source of Truth). Manuelle „Hotfixes" am Cluster vorbei werden technisch unterbunden, was die Stabilität von Produktionsumgebungen massiv erhöht.

3. Multi-Cluster Management und Transparenz

ArgoCD bietet eine zentrale Management-Oberfläche (UI) und CLI, um Deployments über hunderte von Clustern hinweg zu steuern. Anstatt sich in jeden Cluster einzeln einzuwählen, dient die ArgoCD-Instanz als Control Plane. Dies schafft Transparenz darüber, welche Version einer Applikation in welcher Umgebung (Dev, Staging, Prod) gerade läuft.

4. Betriebsmodelle im Vergleich: AWS EKS vs. ayedo Managed Kubernetes

Hier entscheidet sich, ob GitOps wirklich portabel bleibt oder ob man sich unbewusst in den Vendor Lock-In manövriert.

Szenario A: ArgoCD auf AWS EKS (Der Bau des eigenen goldenen Käfigs)

Wer ArgoCD auf EKS betreibt, tappt oft in die Falle der „tiefen Integration". Um ArgoCD produktiv und sicher zu machen, greifen Teams meist auf native AWS-Dienste zurück, was die Unabhängigkeit zerstört:

  • Identitäts-Kopplung (IRSA): Die Berechtigungen für ArgoCD werden über IAM Roles for Service Accounts (IRSA) und proprietäre Annotationen in den ServiceAccounts gelöst. Diese Logik funktioniert nur bei AWS.
  • Ingress-Abhängigkeit: Um die UI sicher bereitzustellen, wird oft der AWS Load Balancer Controller mit ACM-Zertifikaten genutzt. Die Folge: Die Ingress-Manifeste sind „verunreinigt" mit AWS-spezifischen Annotationen und laufen auf keinem anderen Cluster.
  • Das Resultat: Obwohl ArgoCD Open Source ist, ist die konkrete Implementierung nicht mehr portabel. Ein Wechsel zu einem anderen Provider erfordert ein komplettes Refactoring der Deployment-Manifeste, was bedeutet, dass die theoretische Portabilität der Container in der Praxis null und nichtig ist.

Szenario B: ArgoCD mit Managed Kubernetes von Ayedo

Im Ayedo App-Katalog ist ArgoCD eine Kernkomponente (First Class Citizen), die auf maximale Portabilität ausgelegt ist.

  • Standard-Konformität: Die Integration erfolgt über offene Standards (Nginx Ingress, Cert-Manager für Zertifikate, OIDC via Keycloak/Dex).
  • Keine Cloud-Annotationen: Die Manifeste bleiben sauber von provider-spezifischem Noise.
  • Echte Portabilität: Das Setup ist identisch, egal ob es auf AWS, Azure oder im lokalen Rechenzentrum läuft. Der Vendor Lock-in wird auf Architekturebene verhindert.

Technischer Vergleich der Betriebsmodelle

Aspekt AWS EKS (ArgoCD) Ayedo (Managed ArgoCD)
Ingress & Certs AWS ALB & ACM (Proprietär) Nginx & Cert-Manager (Standard)
Identity Management AWS IAM / IRSA (AWS Only) OIDC / Standard RBAC (Portable)
Manifest-Sauberkeit Niedrig (Viele AWS-Annotationen) Hoch (Cloud-Agnostisch)
Strategisches Risiko Hoher Lock-in (Goldener Käfig) Volle Souveränität
Operativer Aufwand Hoch (Updates & Patching manuell) Minimal (Managed Service)

FAQ: ArgoCD & GitOps

Wie gehe ich mit sensiblen Daten (Secrets) in Git um?

Da GitOps fordert, dass der gesamte Zustand im Git liegt, dürfen Passwörter und API-Keys niemals im Klartext gespeichert werden. In professionellen Setups (wie im Ayedo Stack) wird dies durch Zusatz-Tools gelöst: Entweder durch Sealed Secrets (Verschlüsselung, die nur der Cluster entschlüsseln kann) oder den External Secrets Operator (Synchronisation aus einem externen Vault wie HashiCorp Vault). ArgoCD verwaltet dann nur die verschlüsselten Referenzen, nicht die Geheimnisse selbst.

Ersetzt ArgoCD mein bestehendes CI-Tool (Jenkins, GitLab CI)?

Nein, es ergänzt es. ArgoCD ist rein für das Continuous Delivery (CD) zuständig. Dein CI-Tool (z.B. Jenkins) baut weiterhin die Images und führt Tests aus. Am Ende der Pipeline pusht Jenkins aber nicht mehr in den Cluster, sondern aktualisiert lediglich die Image-Version im Git-Repository. ArgoCD erkennt diese Änderung und übernimmt den Rollout. Dies schafft eine saubere Trennung der Verantwortlichkeiten.

ArgoCD vs. Flux: Was ist der Unterschied?

Beide sind CNCF-graduierte GitOps-Tools. Der Hauptunterschied liegt in der Bedienung und Architektur: Flux ist ein reines CLI-Tool ohne grafische Oberfläche, fokussiert auf Automatisierung. ArgoCD bietet eine mächtige Web-UI, die Entwicklern visuelles Feedback über den Deployment-Status gibt. Aufgrund der besseren „Developer Experience" und Transparenz ist ArgoCD oft die bevorzugte Wahl für Plattformen, die von mehreren Teams genutzt werden.

Was passiert, wenn Git und Cluster nicht synchron sind (Drift)?

Standardmäßig zeigt ArgoCD nur an, dass die Applikation „OutOfSync" ist. In Produktionsumgebungen wird jedoch oft Auto-Sync mit Self-Heal aktiviert. In diesem Modus überschreibt ArgoCD jede manuelle Änderung im Cluster sofort wieder mit dem Zustand aus dem Git. Das verhindert „Configuration Drift" und stellt sicher, dass der Cluster immer exakt so aussieht, wie im Code definiert.

Fazit

ArgoCD ist die technologische Antwort auf die Komplexität moderner Microservices-Architekturen. Es erzwingt saubere Prozesse durch GitOps und erhöht die Ausfallsicherheit durch automatisches Self-Healing. Während der Betrieb auf reinen Hyperscaler-Clustern wie EKS oft zu einer versteckten Abhängigkeit führt, bieten Plattformen wie Ayedo einen standardisierten GitOps-Stack. Dies garantiert Unternehmen die Freiheit, ihre Infrastruktur selbst zu besitzen, ob als Managed Service oder in Eigenregie, ohne Abhängigkeiten zu einem Hyperscaler zu erzwingen.

Ähnliche Artikel