Add GitOps workflow and no-drift rules
4.7 KiB
Workflow — GitOps / No-Drift Regeln
Dieses Dokument definiert den verbindlichen Arbeitsablauf für Änderungen an der Homelab-Infrastruktur.
Ziel
Es darf keine dauerhafte Abweichung zwischen:
- Git-Repository
- Portainer-Stacks
- laufenden Docker-Containern
- Host-Konfiguration
geben.
Grundsatz:
Git ist die einzige Quelle der Wahrheit.
Die wichtigste Regel
Änderungen werden immer in dieser Reihenfolge durchgeführt:
- Änderung im Repository
- Commit
- Push
- Deploy über Portainer
- Test
- Dokumentation aktualisieren
Verbotene Arbeitsweise
Folgende Dinge sind grundsätzlich zu vermeiden:
- Änderungen direkt im Portainer Web Editor
- Änderungen direkt per
docker run - Änderungen an laufenden Containern ohne Repo-Anpassung
- spontane Host-Hotfixes ohne Nachdokumentation
- Secrets im Git-Repository
- mehrere Services gleichzeitig migrieren
Erlaubte Arbeitsweise
Erlaubt und gewünscht sind:
- Änderungen an Compose-Dateien im Git-Repo
- Commit + Push vor jedem Deploy
- Portainer nur als Deployment- und Monitoring-Werkzeug
- Host-Hotfixes nur im Ausnahmefall
- sofortige Nachpflege im Repo, wenn ein Hotfix nötig war
- Migration immer nur ein Service pro Sprint
No-Drift-Prinzip
Definition
Configuration Drift liegt vor, wenn der reale Zustand vom Git-Zustand abweicht.
Beispiele:
- laufender Container wurde manuell verändert
- Portainer-Stack entspricht nicht mehr dem Repo
- Host-Dateien wurden angepasst, aber nicht dokumentiert
- Traefik dynamic config wurde lokal geändert, aber Git weiß nichts davon
Regel
Wenn Drift erkannt wird, gilt:
- Drift nicht ignorieren
- Drift sofort benennen
- entscheiden:
- Repo an Realität anpassen
oder - Realität an Repo zurückführen
- Repo an Realität anpassen
- erst danach weiterarbeiten
Ausnahmefall: Hotfix auf dem Host
Manchmal ist ein Live-Hotfix nötig, um einen Dienst sofort wieder lauffähig zu machen.
Das ist erlaubt, aber nur unter diesen Bedingungen:
- Hotfix nur wenn der Dienst sonst nicht funktioniert
- Änderung sofort dokumentieren
- Änderung danach ins Git-Modell überführen
- kein stiller Dauerzustand
Pflicht bei Hotfixes
Nach jedem Hotfix müssen diese Fragen beantwortet werden:
- Was wurde geändert?
- Wo wurde es geändert?
- Warum war es nötig?
- Muss diese Änderung ins Repo übernommen werden?
- Ist ein Rollback dokumentiert?
Portainer-Regeln
Portainer ist in diesem Setup:
- Deployment-Werkzeug
- Monitoring-Werkzeug
- Log-/Status-Werkzeug
Portainer ist nicht die Quelle der Wahrheit.
Deshalb gilt
- Git-Stacks nicht im Portainer Editor ändern
- Stack-Konfiguration nur im Repository anpassen
- Portainer nur zum Deploy/Redeploy nutzen
- Wenn Portainer und Git voneinander abweichen, gewinnt Git
Secrets-Regeln
- Secrets liegen niemals im Repository
- Secrets liegen unter
/mnt/user/appdata/secrets/ - Secrets werden über Datei-Mounts oder
_FILEVariablen eingebunden - Rechte:
chmod 600 - Secret-Namen und Pfade werden in
docs/SECRETS_MAP.mddokumentiert
Dokumentationspflicht
Nach jeder erfolgreichen Migration oder relevanten Änderung müssen diese Dateien geprüft werden:
docs/MIGRATION_LOG.mddocs/SECRETS_MAP.mddocs/ROLLBACK.mdHOMELAB_ARCHITECTURE_MASTER_V2.md(falls Architektur betroffen)
Sprint-Regel
Jede Migration wird als Sprint behandelt.
Ein Sprint umfasst immer:
- Ist-Zustand prüfen
- Zielzustand definieren
- Compose-Datei im Repo anpassen
- Commit + Push
- Deploy über Portainer
- Test
- Dokumentation aktualisieren
- Sprint abschließen
Wichtig
Nie mehrere kritische Dienste gleichzeitig ändern.
Rollback-Regel
Jede Änderung muss rückrollbar sein.
Vor jedem Deploy muss klar sein:
- wie der letzte funktionierende Zustand aussieht
- welcher Commit der letzte stabile Stand ist
- ob Datenpfade unverändert bleiben
- wie der Dienst im Fehlerfall zurückgenommen wird
Wenn Rollback nicht klar ist, wird nicht deployt.
Umgang mit Legacy-Konfiguration
Legacy-Konfigurationen außerhalb des Repos gelten als Risiko.
Beispiele:
- alte Traefik dynamic files
- manuell erzeugte Host-Konfigurationen
- frühere Docker-/Dockerman-Einzelcontainer
Regel
Legacy-Bestand muss:
- identifiziert
- dokumentiert
- schrittweise entfernt oder ins Repo überführt
werden.
Arbeitsregel für KI-Assistenten
Wenn mit einer KI gearbeitet wird, gilt immer:
Lies zuerst:
HOMELAB_ARCHITECTURE_MASTER_V2.mddocs/WORKFLOW.md- die betroffene Compose-Datei
- ggf.
docs/MIGRATION_LOG.md
Erst danach dürfen Änderungen vorgeschlagen werden.
Merksatz
Erst Git, dann Deploy.
Erst Wahrheit, dann Aktion.
Kein Drift, kein Chaos.