Flux CD Flux CD

Flux mit der Flux CLI verwalten

Prüfen, untersuchen, abgleichen, vergleichen, nachverfolgen, suspendieren und Fehler beheben bei Flux-Ressourcen im Terminal.

10 min Anfänger

Flux hat keine eingebaute Web-Oberfläche. Alles, was du im Alltag tust, läuft über die flux-CLI und kubectl, was es auch leicht skriptbar macht. Diese Anleitung setzt voraus, dass Flux gebootstrapt ist und die Kustomization webapp aus den früheren Anleitungen existiert.

Die CLI installieren und den Cluster prüfen

Installiere die CLI (brew install fluxcd/tap/flux unter macOS oder curl -s https://fluxcd.io/install.sh | sudo bash) und prüfe sie:

flux --version
flux check --pre   # vor der Installation: ist der Cluster kompatibel?
flux check         # nach der Installation: sind die Controller gesund?

Mit flux --help listest du die Befehle auf. Die meisten Befehle lesen standardmäßig aus dem Namespace flux-system. Füge -A (--all-namespaces) hinzu, um überall zu suchen, oder -n <namespace> für einen bestimmten.

Untersuchen, was existiert

flux get all -A
flux get sources git
flux get kustomizations
flux get helmreleases -A

Jede Zeile zeigt die Revision des Objekts, ob es Ready ist, ob es suspendiert ist und die letzte Statusmeldung. flux get all -A ist ein guter erster Befehl, wenn etwas falsch aussieht. Um zu sehen, wie Objekte zueinander in Beziehung stehen:

flux tree kustomization flux-system
flux trace deployment webapp -n webapp

tree listet alles auf, was eine Kustomization verwaltet. trace geht in die andere Richtung: Zu einem Live-Objekt zeigt es, aus welcher Kustomization und welcher Git-Source und Revision es stammt.

Bei Bedarf abgleichen

Flux fragt in einem Intervall ab. Um es jetzt zu erzwingen:

flux reconcile source git flux-system
flux reconcile kustomization webapp --with-source
flux reconcile helmrelease podinfo -n podinfo

--with-source aktualisiert die Git-Source vor dem Anwenden, sodass ein gerade gepushter Commit sofort aufgegriffen wird.

Vor dem Pushen eine Vorschau

Zwei Befehle rendern und vergleichen, ohne den Cluster zu ändern, was bei Code-Reviews und in CI nützlich ist:

flux build kustomization webapp --path ./apps/webapp --dry-run
flux diff kustomization webapp --path ./apps/webapp

build gibt die Manifeste aus, die Flux anwenden würde. diff vergleicht sie mit dem, was läuft. Beide lesen aus einem lokalen Ordner, führe sie also aus einem Clone des Repositorys aus.

Fehlersuche

flux logs --all-namespaces --level=error --follow
flux events --for Kustomization/webapp
kubectl describe kustomization webapp -n flux-system

flux logs streamt Controller-Logs, flux events zeigt Kubernetes-Events für ein bestimmtes Objekt, und kubectl describe zeigt die Bedingungen und den letzten Fehler eines Objekts. Häufige Ursachen einer fehlschlagenden Kustomization sind ein falscher path, eine fehlende Abhängigkeit (prüfe dependsOn), ungültiges YAML oder ein fehlgeschlagener Health Check bei gesetztem wait: true. Bei einem hängenden GitRepository zeigt describe meist einen Authentifizierungsfehler.

Ressourcen ohne YAML-Schreiben erstellen

Die meisten flux create-Befehle können YAML ausgeben, statt anzuwenden. Committe die Ausgabe in Git, damit alles deklarativ bleibt:

flux create source git webapp-config \
  --url=https://github.com/your-org/webapp-config \
  --branch=main --interval=1m --export > webapp-source.yaml

flux create kustomization webapp \
  --source=GitRepository/webapp-config \
  --path=./apps/webapp --prune=true --interval=10m --export > webapp.yaml

Ohne --export wendet der Befehl das Objekt direkt an, was für Experimente in Ordnung ist, den Cluster aber nicht mehr im Einklang mit Git lässt. Um bestehende Objekte als YAML auszugeben, nutze flux export:

flux export source git --all
flux export kustomization --all

Pausieren, fortsetzen und aufräumen

flux suspend kustomization webapp
flux resume kustomization webapp
flux delete kustomization webapp
flux uninstall

suspend stoppt den Abgleich, und resume startet ihn wieder. delete entfernt die Kustomization und, bei prune: true, auch die Ressourcen, die sie verwaltet, es kann also einen Moment dauern. uninstall entfernt Flux selbst aus dem Cluster. Führe danach flux get kustomizations aus, um das zu bestätigen.

Praktische Extras

  • flux stats fasst zusammen, wie viele Flux-Ressourcen existieren und wie viele bereit sind.
  • Flux 2.9 hat ein CLI-Plugin-System (flux plugin) mit Plugins wie mirror und schema hinzugefügt. Führe flux plugin --help aus, um zu sehen, was deine Version bietet.
  • Weil es keine UI gibt, ergänzen viele Teams Grafana-Dashboards oder ein Community-Dashboard auf Basis der von Flux bereitgestellten Metriken.

Beliebte Anleitungen