Dennis Fricke

GitOps mit Flux

Knowledge Base

Was ist Flux?

Flux ist ein Tool, dass automatisch sicherstellt, dass der State deines Cluster der config in git entspricht. Es benutzt einen Operator im Cluster um Deployments in Kubernetes anzustoßen. Das wiederum bedeutet, dass du kein separates CD Tool benötigst. Es überwacht alle relevanten Image Repositories z.B. docker, erkennt neue Images, löst neue Deployments aus und aktualisiert den State deiner Applikation im Cluster.

Grundsätze

Deklarative Beschreibung des gesamten States in git - dies beinhaltet die Applikationen, Konfigurationen, Monitoring und alles Andere.
Was man beschreiben kann, kann man automatisieren - Du musst weder kubectl noch helm nutzen. Alle Änderungen werden im git Repository gemacht.
Du pushst Code, keine Container - Alles wird durch Pull Requests kontrolliert. Es gibt keine neue Lernkurve für neue Entwickler, da der Standard-Prozess mit Pull-Requests genutzt wird.

Vorteile von flux

Du musst deiner CI keinen Zugriff auf dein Cluster geben - Bisher werden Deployments oft durch die Pipelines um CI/CD Prozess angestoßen. Das bedeutet, dass das System Zugriff auf dein Cluster benötigt. Nutzt du flux benötigt dein Cluster lediglich Zugriff auf dein Git Repository. Alles weitere funktioniert automatisch.
Jede Änderung ist atomar und nachvollziehbar - Durch git sind die Änderungen am Cluster für jeden transparent und nachvollziehbar.
Ein sauberes Audit Log in git - Solltest du Probleme mit deinem Deployment haben, kannst du dein Repository sehr einfach auf einen funktionsfähigen Stand zurückrollen.
Komplett Code driven - Alles ist Code driven. Es gibt also keine instransparenten manuellen Schritte für das Deployment im Cluster.


Weitere Informationen findest du bei Learning at Ninjaneers.

29 Sep 2020 #flux #gitops #k8s #kubernetes