NatronTech Logo
GitOps

ArgoCD

Availability
Stage
Experimental
ArgoCD Logo

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=true

Alternativ 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 # Beispielname

Warum 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

On this page