Flux mit der Flux CLI verwalten
Prüfen, untersuchen, abgleichen, vergleichen, nachverfolgen, suspendieren und Fehler beheben bei Flux-Ressourcen im Terminal.
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 statsfasst zusammen, wie viele Flux-Ressourcen existieren und wie viele bereit sind.- Flux 2.9 hat ein CLI-Plugin-System (
flux plugin) mit Plugins wiemirrorundschemahinzugefügt. Führeflux plugin --helpaus, 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
-
Push vs. Pull: Wie Flux auf Kubernetes ausliefert Warum pull-basierte, Git-gesteuerte Auslieferung verändert, wie du Cluster deployst, absicherst und wiederherstellst. -
Deine erste Anwendung mit GitRepository und Kustomization deployen Richte Flux mit einer Kustomization-Ressource auf Manifeste in Git aus und sieh dem Sync zu. -
Sync-Verhalten steuern: Intervalle, Prune, Drift-Korrektur und Rollback Entscheide, wann Flux Änderungen anwendet, was es löscht, wie du es pausierst und wie du ein fehlerhaftes Deployment rückgängig machst. -
Image-Updates mit Flux Image Automation automatisieren Lass Flux neue Container-Image-Tags erkennen und in Git zurückcommitten. -
Multi-Cluster mit Flux konfigurieren Mehrere Cluster aus einem Repository verwalten, mit gemeinsamer Infrastruktur und Unterschieden pro Cluster. -
Flux CD vs. Argo CD: Ein GitOps-Werkzeug wählen Vergleiche Architektur, UI, Helm, Secrets, Mandantenfähigkeit und Image-Automatisierung, um das richtige Werkzeug zu wählen.