Files
homelab-infra/docs/WORKFLOW.md
T
Micha a9f5496c12 docs/WORKFLOW.md hinzugefügt
Add GitOps workflow and no-drift rules
2026-03-23 18:41:08 +00:00

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:

  1. Änderung im Repository
  2. Commit
  3. Push
  4. Deploy über Portainer
  5. Test
  6. 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:

  1. Drift nicht ignorieren
  2. Drift sofort benennen
  3. entscheiden:
    • Repo an Realität anpassen
      oder
    • Realität an Repo zurückführen
  4. 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:

  1. Hotfix nur wenn der Dienst sonst nicht funktioniert
  2. Änderung sofort dokumentieren
  3. Änderung danach ins Git-Modell überführen
  4. 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 _FILE Variablen eingebunden
  • Rechte: chmod 600
  • Secret-Namen und Pfade werden in docs/SECRETS_MAP.md dokumentiert

Dokumentationspflicht

Nach jeder erfolgreichen Migration oder relevanten Änderung müssen diese Dateien geprüft werden:

  • docs/MIGRATION_LOG.md
  • docs/SECRETS_MAP.md
  • docs/ROLLBACK.md
  • HOMELAB_ARCHITECTURE_MASTER_V2.md (falls Architektur betroffen)

Sprint-Regel

Jede Migration wird als Sprint behandelt.

Ein Sprint umfasst immer:

  1. Ist-Zustand prüfen
  2. Zielzustand definieren
  3. Compose-Datei im Repo anpassen
  4. Commit + Push
  5. Deploy über Portainer
  6. Test
  7. Dokumentation aktualisieren
  8. 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:

  1. identifiziert
  2. dokumentiert
  3. schrittweise entfernt oder ins Repo überführt

werden.


Arbeitsregel für KI-Assistenten

Wenn mit einer KI gearbeitet wird, gilt immer:

Lies zuerst:

  1. HOMELAB_ARCHITECTURE_MASTER_V2.md
  2. docs/WORKFLOW.md
  3. die betroffene Compose-Datei
  4. 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.