ArgoCD
ArgoCD ist das zentrale GitOps Continuous Delivery Tool für Kubernetes. Es gleicht den in Git definierten Soll-Zustand (Desired State) automatisch mit dem Ist-Zustand (Live State) im Cluster ab. Bei Natron ist ArgoCD die empfohlene Lösung für Deployment-Automatisierung.
Key Features
- Deklaratives GitOps: Single Source of Truth ist das Git-Repository.
- Auto-Sync: Erkennt Änderungen im Git und wendet sie automatisch auf den Cluster an.
- Multi-Cluster: Zentrale Verwaltung von Deployments über mehrere Cluster hinweg.
- RBAC: Feingranulare Rechteverwaltung für Teams.
- UI & CLI: Intuitive Web-Oberfläche und mächtiges CLI-Tool.
Zugriff auf ArgoCD
Sie erreichen ArgoCD sicher über Teleport – entweder via Web UI oder CLI.
ArgoCD Web UI
Der Zugriff erfolgt über den Teleport Application Proxy.
Teleport öffnen
Loggen Sie sich in die Teleport Web UI ein oder starten Sie Teleport Connect.
Applikation finden
Suchen Sie im Bereich "Applications" nach argocd.
Starten
Ein Klick auf Launch öffnet ArgoCD direkt in Ihrem Browser.
Login
Melden Sie sich mittels SSO (empfohlen) oder lokalen Admin-Credentials an.
ArgoCD CLI
Für die Nutzung via CLI muss der ArgoCD Client installiert sein.
Login-Befehl:
argocd login <ARGOCD_SERVER> --username <USERNAME> --password <PASSWORD>Tipp: Nutzen Sie --sso für den Login via Identity Provider.
Best Practices & Konzepte
Applikationsstruktur (App of Apps)
Natron nutzt das "App of Apps" Pattern (verwaltet von FluxCD), um ArgoCD-Applikationen deklarativ zu provisionieren. Dies sorgt für eine saubere Trennung von Infrastruktur- und Applikationscode.
Namespace-Verwaltung
ArgoCD kann Namespaces bei Bedarf automatisch erstellen.
Empfehlung: ArgoCD Auto Create Aktivieren Sie dieses Feature direkt im Application Manifest:
managedNamespaceMetadata:
labels:
app.kubernetes.io/managed-by: argocd-namspace-autocreation
syncOptions:
- CreateNamespace=trueAlternativ können Sie Namespaces explizit als Kubernetes-Ressource (ns.yaml) verwalten.
Ressourcen-Löschung (Finalizers)
Um sicherzustellen, dass beim Löschen einer ArgoCD App (z.B. in der UI) auch alle zugehörigen Pods und Services entfernt werden, benötigen Sie einen Finalizer:
resources-finalizer.argocd.argoproj.io
Ohne diesen Finalizer bleiben die Ressourcen im Cluster verwaist zurück.
[!WARNING] Das Löschen einer App in der UI fügt diesen Finalizer oft implizit hinzu. Seien Sie vorsichtig!
SOPS Entschlüsselung
Für verschlüsselte Secrets (SOPS) binden wir entsprechende Plugins ein. Geben Sie dies in der Application Spec an:
spec:
source:
plugin:
name: sops # BeispielnameWarum keine ApplicationSets?
Wir raten von ApplicationSets ab, da sie limitiertes Templating bieten und bei komplexen Setups (mehrere Sources, Rollbacks) oft zu Problemen führen. Das "App of Apps" Pattern ist robuster.
Troubleshooting
App hängt im Sync ("Unknown" Status)
Wenn eine App nicht mehr synchronisiert oder gelöscht werden kann (z.B. Ziel-Cluster fehlt), müssen oft die Finalizer manuell entfernt werden:
kubectl patch app -n argocd <app-name> -p '{"metadata": {"finalizers": null}}' --type merge