GitOps
GitOps
Die Evolution von DevOps: Nutzen Sie Git als Single Source of Truth für Ihre gesamte Infrastruktur und Anwendungsbereitstellung. Automatisieren Sie Deployments, erhöhen Sie die Sicherheit und verbessern Sie die Zusammenarbeit im Team.
Inhaltsverzeichnis
Schnellübersicht
Auf dieser Seite lernen Sie alles über GitOps im Enterprise-Umfeld:
- Definition: Was ist GitOps und wie unterscheidet es sich von DevOps?
- Die 4 Prinzipien: Declaration, Versioning, Approval, Software Agents
- Workflow: Vom Code-Commit zur automatischen Deployment
- Tools: ArgoCD vs. Flux – Der große Vergleich
- Vorteile: Warum Unternehmen auf GitOps umsteigen
- Best Practices: Struktur, Security, Monitoring und Kultur
- FAQ: Häufige Fragen und Antworten
1. Was ist GitOps?
Definition
GitOps ist ein Betriebsmodell, das DevOps-Best-Practices (wie Continuous Integration, Continuous Delivery und Infrastructure as Code) mit Git als zentrale Quelle der Wahrheit kombiniert.
Im Kern bedeutet GitOps: "If it's not in Git, it doesn't exist." Jede Änderung an der Infrastruktur oder den Anwendungen wird als Pull Request in ein Git-Repository eingebracht. Ein automatisierter Agent (z.B. ArgoCD oder Flux) überwacht dieses Repository und synchronisiert den Ist-Zustand der Cluster mit dem Soll-Zustand im Git.
Der fundamentale Unterschied zu traditionellem DevOps: Bei DevOps "pushen" CI/CD-Pipelines Änderungen in die Produktion. Bei GitOps "pullt" ein Operator im Cluster die Änderungen aus Git. Dies erhöht die Sicherheit, da keine externen Tools Schreibzugriff auf die Produktionscluster benötigen.
GitOps vs. DevOps
GitOps ist kein Ersatz für DevOps, sondern eine konkrete Implementierung von DevOps-Prinzipien für Kubernetes und Cloud-native Umgebungen.
- DevOps: Eine Kultur und Philosophie der Zusammenarbeit.
- GitOps: Ein technischer Framework, der Git als zentrales Element nutzt, um diese Philosophie umzusetzen.
2. Die 4 Prinzipien von GitOps
GitOps basiert auf vier fundamentalen Prinzipien, die von Weaveworks definiert wurden:
Declarative
Das gewünschte System (Infrastruktur, Apps, Config) wird deklarativ in Git beschrieben (z.B. via YAML/Kubernetes Manifests). Das System sorgt automatisch dafür, dass der Ist-Zustand diesem Soll-Zustand entspricht.
Versioned & Immutable
Der gewünschte Zustand wird in Git versioniert. Jeder Commit ist ein unveränderlicher Snapshot. Dies ermöglicht einfaches Rollback, Audit-Trails und Reproduzierbarkeit jeder Umgebung.
Automated Approved
Änderungen werden über standardisierte Prozesse (Pull Requests, Code Reviews) genehmigt. Sobald ein Merge erfolgt, wird die Änderung automatisch angewendet. Keine manuellen Eingriffe in die Produktion.
Software Agents
Automatisierte Software-Agenten (wie ArgoCD oder Flux) überwachen kontinuierlich das Git-Repository und die Cluster. Bei Drift (Abweichung) synchronisieren sie den Zustand automatisch zurück zum Git-Standard.
3. Der GitOps Workflow
So funktioniert der typische Bereitstellungsprozess in einer GitOps-Umgebung:
Vom Code zur Produktion
1. Developer Commit
Entwickler ändert Code oder Config (YAML) und pusht zu Git.
2. Pull Request
Code Review und Approval durch Team-Mitglieder im Git-System.
3. Merge to Main
Änderung wird in den Haupt-Branch gemergt. Git ist nun die neue Wahrheit.
4. Auto-Sync
GitOps-Agent erkennt Änderung und deployt automatisch ins Cluster.
Key Benefit: Self-Healing
Wenn jemand manuell etwas im Cluster ändert (was er nicht sollte), erkennt der GitOps-Agent den "Drift" (die Abweichung vom Git-Zustand) und setzt die Änderung automatisch zurück. Das System heilt sich selbst.
4. Die führenden GitOps Tools
Zwei Open-Source-Projekte dominieren den GitOps-Markt: ArgoCD und Flux.
ArgoCD
Ein graduierter CNCF-Projekt, das speziell für Kubernetes entwickelt wurde. Bietet eine mächtige Web-UI und unterstützt komplexe Deployment-Strategien.
- Native Kubernetes CRDs
- Exzellente Web-UI zur Visualisierung
- Unterstützt Blue/Green & Canary
- Multi-Cluster Management
- SSO Integration (OIDC, SAML)
Flux (v2)
Ebenfalls ein CNCF-Projekt, bekannt für seine Modularität und "GitOps Toolkit". Flux ist sehr leichtgewichtig und stark CLI-getrieben.
- Highly modular (GitOps Toolkit)
- Sehr leichtgewichtig & ressourcenschonend
- Starke CLI-Unterstützung
- Image Update Automation built-in
- Agnostisch (nicht nur K8s)
5. Vor- und Nachteile
| Kriterium | GitOps | Traditionelles CI/CD (Push) |
|---|---|---|
| Sicherheit | Hoch (Kein Cluster-Zugriff für CI) | Mittel (CI hat Admin-Rechte) |
| Audit Trail | Perfekt (Git History) | Oft lückenhaft |
| Rollback | Sekunden (Git Revert) | Minuten/Stunden (Neuer Build) |
| Lernkurve | Steil (Git + K8s tiefes Wissen) | Flacher (Bekannte Tools) |
| Self-Healing | Ja (Automatischer Sync) | Nein (Manuell) |
| Tooling | Spezialisiert (Argo/Flux) | Vielfältig (Jenkins, GitLab, etc.) |
6. Enterprise Best Practices
Repo-Struktur
- Trennen Sie App-Code von Infra-Code
- Nutzen Sie Monorepos oder Polyrepos konsistent
- Verwenden Sie Kustomize oder Helm für Templates
- Halten Sie Secrets aus dem Repo raus (Sealed Secrets, Vault)
Security & Access
- Branch Protection Rules aktivieren
- Mandatory Code Reviews für Prod-Branches
- Signierte Commits verwenden
- Least Privilege für Service Accounts im Cluster
Monitoring & Alerts
- Überwachen Sie "Sync Status" und "Drift"
- Alerting bei fehlgeschlagenen Syncs
- Integrieren Sie GitOps-Metriken in Prometheus/Grafana
- Tracken Sie Lead Time for Changes
Kultur & Training
- Schulen Sie Teams in Git-Workflows
- Fördern Sie "You build it, you run it"
- Starten Sie klein (Non-Prod) vor Prod-Einsatz
- Dokumentieren Sie Disaster Recovery Pläne
7. FAQ – Häufige Fragen
Häufige Fragen zu GitOps
Nein, aber es ist dort am stärksten verbreitet. GitOps kann theoretisch für jede Infrastruktur angewendet werden, die sich deklarativ beschreiben lässt (z.B. Terraform für Cloud-Ressourcen, Ansible für Server-Konfiguration). Die meisten Tools (ArgoCD, Flux) sind jedoch primär auf Kubernetes optimiert.
Secrets sollten niemals im Klartext in Git liegen. Übliche Lösungen sind:
- Sealed Secrets (Kubernetes): Verschlüsselt Secrets, die nur vom Cluster entschlüsselt werden können.
- External Secrets Operator: Holt Secrets aus externen Vaults (HashiCorp Vault, AWS Secrets Manager).
- SOPS (Mozilla): Verschlüsselt Dateien direkt im Repo mit GPG/AGE Keys.
Da der GitOps-Agent den letzten bekannten Zustand im Cluster cached, läuft die Anwendung weiter. Allerdings können keine neuen Deployments durchgeführt werden, bis Git wieder verfügbar ist. Es ist daher ratsam, ein hochverfügbares Git-System (z.B. GitHub Enterprise mit HA oder selbst gehostetes GitLab mit Redundanz) zu nutzen.
Ja, absolut. Das ist sogar der Standardweg. Ihre CI-Pipeline baut die Container-Images, pusht sie in die Registry und aktualisiert dann die Versionsnummer in den YAML-Manifesten im Git-Repo. Der GitOps-Agent (Argo/Flux) sieht die Änderung im YAML und deployed das neue Image. CI bleibt für Build/Test zuständig, GitOps für das Deployment.
Die Entscheidung hängt von Ihren Präferenzen ab:
- Wählen Sie ArgoCD, wenn Sie eine grafische Oberfläche mögen, komplexe App-Strukturen haben und Multi-Cluster-Management benötigen.
- Wählen Sie Flux, wenn Sie "Everything as Code" bevorzugen, eine leichte Lösung suchen und stark auf CLI setzen möchten.
Beide sind exzellente, sichere CNCF-Projekte.
Dies ist einer der zentralen Unterschiede zwischen traditionellem CI/CD (Push) und GitOps (Pull):
- Push-Modell (traditionell): Ein CI-Server (z.B. Jenkins, GitLab CI) hat direkten Zugriff auf den Cluster und push die Änderungen (kubectl apply) per SSH oder API. Nachteil: Der CI-Server benötigt Admin-Rechte im Cluster – ein großes Sicherheitsrisiko.
- Pull-Modell (GitOps): Ein Agent (Argo/Flux) läuft im Cluster und überwacht das Git-Repo. Er pull die Änderungen selbständig. Der CI-Server braucht nur Schreibrechte auf das Git-Repo, nicht auf den Cluster – sicherer und auditierbar.
Fazit: Pull ist sicherer, einfacher zu rolen und erlaubt Self-Healing.
Es gibt mehrere etablierte Strategien für Multi-Environment Management:
- Branching-Modell: Jedes Environment hat einen eigenen Branch (z.B.
dev,staging,prod). Der GitOps-Agent deployed entsprechend dem Branch. Nachteil: Merge-Konflikte und Heavy Merge-Management. - Directory-Modell (Empfohlen): Ein einziger Main-Branch, aber separate Unterverzeichnisse pro Environment (z.B.
/overlays/dev,/overlays/staging,/overlays/prod) mit Kustomize oder Helm-Values. Der Agent deployt die Overlays je nach Cluster. - App-of-Apps Pattern: Ein übergeordnetes Manifest, das alle Sub-Anwendungen für jedes Environment definiert – sehr mächtig für große Systeme.
Best Practice: Nutzen Sie Kustomize oder Helm mit values.yaml pro Environment. So haben Sie maximale Flexibilität bei minimalem Code-Duplikat.
GitOps fördert "Shift-Left-Testing" – Änderungen werden schon vor dem Merge getestet. Gängige Ansätze sind:
- Pull Request Environments (Preview Environments): Per Pipeline wird bei jedem PR automatisch ein temporärer Namespace/Cluster mit der Änderung erstellt. Tools wie ArgoCD Rollouts oder Kubernetes Namespaces als Sandbox ermöglichen das.
- CI-Phase vor dem Merge: Die CI-Pipeline (z.B. GitLab CI, GitHub Actions) führt
kubectl diff,kubevaloderconftest(OPA) aus, um YAML-Syntax und Policy-Verstöße zu prüfen. - GitOps-Overlays für Test: Ein separates Overlay für "PR-Tests" deploys die Änderung auf einen dedizierten Test-Cluster, bevor der PR gemergt wird.
Empfehlung: Kombinieren Sie automatisierte Linting/Policy-Tests mit dynamischen Preview-Umgebungen für kritische Änderungen.
Drift bezeichnet die Abweichung zwischen dem deklarierten Zustand in Git (Soll-Zustand) und dem tatsächlichen Zustand im Cluster (Ist-Zustand).
Ursachen können sein:
- Manuelle
kubectl editoderkubectl applydurch einen Admin - HPA (Horizontal Pod Autoscaler) oder andere Controller ändern Ressourcen
- Zugriffsfehler, die zu unvollständigen Deployments führen
GitOps-Lösung: Der Agent (Argo/Flux) führt regelmäßig Vergleiche durch (Sync-Interval, oft 3-5 Minuten). Bei Drift gibt es zwei Verhaltensweisen:
- Auto-Sync: Der Agent überschreibt automatisch den Ist-Zustand, um ihn wieder mit Git abzugleichen (Self-Healing).
- Manual-Sync: Der Agent alarmiert nur (z.B. als "OutOfSync" in der UI) und erwartet manuelles Eingreifen – empfehlenswert für Produktionsumgebungen.
Best Practice: In Prod lieber auf Manual-Sync mit starken Alerts setzen, um unbeabsichtigte Deployments zu vermeiden.
Infrastructure as Code (IaC) ist der Oberbegriff für das Verwalten von Infrastruktur über maschinenlesbare Definitionsdateien (z.B. Terraform, CloudFormation, Ansible).
GitOps ist eine spezifische Implementierung von IaC, die drei zusätzliche Elemente hinzufügt:
- Git als Single Source of Truth: Nicht nur die Definitionen, sondern auch der gesamte Zustand aller Umgebungen wird in Git abgebildet.
- Pull-basierte Agenten: Automatisierte Software (Argo/Flux) stellt sicher, dass der Cluster immer dem Git-Zustand entspricht – ohne manuelles Ausführen von IaC-Tools.
- Continuous Reconciliation: Der Agent überwacht kontinuierlich und korrigiert automatisch Drift – IaC-Tools laufen meist nur einmal bei Provisionierung oder Update.
Meta: GitOps baut auf IaC auf und erweitert es um automatisierte, pull-basierte Continuous Delivery und Self-Healing. Beide sind komplementär – viele Teams nutzen Terraform für Cloud-Ressourcen (Accounts, VPCs) und GitOps (Argo/Flux) für Kubernetes-Workloads.
Zusammenfassung
Die wichtigsten Punkte
- Definition: GitOps nutzt Git als Single Source of Truth für Infra und Apps.
- 4 Prinzipien: Declarative, Versioned, Automated Approved, Software Agents.
- Workflow: Developer -> Git PR -> Merge -> Auto-Sync by Agent.
- Tools: ArgoCD (UI-fokussiert) und Flux (CLI/Modular) sind die Marktführer.
- Vorteile: Höhere Sicherheit, schnelleres Rollback, Auditability, Self-Healing.
- Secrets: Nie im Klartext! Nutzen Sie Sealed Secrets oder Vault.
- Kultur: GitOps erfordert Disziplin im Umgang mit Git und Code Reviews.
Enterprise-Tipps
- Start Small: Beginnen Sie mit Non-Production Clusters.
- Policy as Code: Nutzen Sie OPA/Gatekeeper, um Compliance im Git zu erzwingen.
- Disaster Recovery: Ihr Git-Repo ist Ihr Backup. Stellen Sie sicher, dass es redundant ist.
- Training: Investieren Sie in Git-Schulungen für Ihr Ops-Team.
Weiterführende Themen
Kubernetes im großen Stil – Management, Security und Best Practices.
Zu Kubernetes EnterpriseIstio, Linkerd – Kommunikation, Security und Observability zwischen Services.
Zu Service MeshLogging, Metrics, Tracing – Wie man komplexe Systeme überwacht.
Zu ObservabilitySecurity-Modell "Never trust, always verify" im Enterprise-Umfeld.
Zu Zero Trust