Wer FluxCD im Alltag nutzt, kennt das Spiel: Man wechselt ständig zwischen flux get kustomizations, flux get sources git, kubectl describe und vielleicht noch einem kubectl get events, um zu verstehen, warum ein Deployment gerade nicht durchläuft. K9s hat das für klassische Kubernetes-Ressourcen längst gelöst, aber für die Flux-CRDs fehlte bisher das passende Pendant.
Genau diese Lücke schließt flux9s: Ein K9s-inspiriertes Terminal-UI speziell für FluxCD. Ich bin durch Zufall darauf gestoßen und finde das Projekt interessant genug, um es hier kurz vorzustellen.
Was macht flux9s?
flux9s ist ein in Rust geschriebenes TUI (Terminal User Interface), das die wichtigsten Flux-Ressourcen in Echtzeit anzeigt und bedienbar macht. Unter der Haube nutzt es die Kubernetes Watch API über kube-rs, die CRD-Typen werden mit kopium generiert.
Die Feature-Liste deckt das ab, was man im Alltag tatsächlich braucht:
- Echtzeit-Monitoring der Flux Custom Resources – Kustomizations, GitRepositories, HelmReleases, OCIRepositories, Buckets und mehr
- Unified View oder typspezifisch – entweder alles auf einen Blick oder gefiltert nach Ressourcentyp
- Aktionen direkt aus der Oberfläche: Suspend, Resume, Reconcile, Reconcile-with-Source, Delete
- YAML-Inspektion der vollständigen Manifeste mit einem Tastendruck
- Graph-Ansicht der Abhängigkeiten zwischen Ressourcen – sehr praktisch, um zu sehen, welche Kustomization gerade welche HelmRelease managed
- Reconciliation-History für Kustomizations, HelmReleases, FluxInstance und ResourceSet
- Trace der Ownership-Kette einer Ressource
- Favoriten, Namespace-Switching, Context-Switching
- 17 eingebaute Themes plus die Möglichkeit, eigene Skins zu importieren (das Format ist an K9s angelehnt, aber nicht 1:1 kompatibel)
Was mir besonders gefällt
Zwei Details fallen positiv auf:
Readonly per Default. flux9s startet im Readonly-Modus. Wer eine destruktive Aktion ausführen will, muss das explizit aktivieren, entweder dauerhaft per flux9s config set readOnly false oder pro Session mit :readonly. Für ein Tool, das produktive Cluster im Blick hat, ist das genau die richtige Default-Einstellung. Ein versehentliches Ctrl+d auf der Root-Kustomization will man nun wirklich nicht erleben.
Vertraute Keybindings. Wer K9s gewohnt ist, findet sich sofort zurecht: j/k zum Navigieren, : für den Command-Mode, / zum Filtern, y für YAML, d für Describe. Hinzu kommen Flux-spezifische Bindings wie s (suspend), r (resume), R (reconcile) und W (reconcile with source).
Installation
Auf macOS und Linux geht es am bequemsten per Homebrew:
brew install dgunzy/tap/flux9s
Alternativ über cargo:
cargo install flux9s
# oder mit cargo-binstall ohne Compile-Schritt:
cargo binstall flux9s
Vorgebaute Binaries für Linux, macOS (Intel & Apple Silicon) und Windows gibt es außerdem auf der Releases-Seite.
Erster Start
Vorausgesetzt der kubeconfig zeigt auf einen Cluster mit installiertem Flux, reicht ein simples:
flux9s
Standardmäßig wird der Namespace flux-system beobachtet. Mit :ns all sieht man alle Namespaces, mit :ns <name> wechselt man gezielt. :ctx öffnet ein interaktives Menü zum Context-Switch, sehr angenehm, wenn man mehrere Cluster gleichzeitig betreut.
Einordnung
flux9s ist klar Version 0.9.x, also noch kein „rock solid" 1.0-Release. Der Autor weist im README ehrlich darauf hin, dass das Scaffold mit KI-Unterstützung entstanden ist und um Issues/PRs gebeten wird. Trotzdem: Für ein junges Projekt fühlt sich die Bedienung schon sehr rund an, und der Funktionsumfang deckt die wichtigsten Workflows ab. Wer FluxCD ernsthaft im Einsatz hat – sei es im Homelab oder produktiv – sollte flux9s zumindest mal ausprobieren.
Bei mir wandert es jedenfalls neben K9s in den Werkzeugkasten. Für die schnelle Diagnose „warum reconciled das gerade nicht?" deutlich angenehmer, als sich durch mehrere flux get- und kubectl describe-Aufrufe zu hangeln.
Links
- Repository: github.com/dgunzy/flux9s
- Projektseite: flux9s.ca
- K9s (das Original): github.com/derailed/k9s
- FluxCD: fluxcd.io