4.5 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
- Komodo-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 (Gitea)
- Commit
- Push
- Deploy über Komodo (GitOps-Sync)
- Test
- Dokumentation aktualisieren
Verbotene Arbeitsweise
Folgende Dinge sind grundsätzlich zu vermeiden:
- Änderungen direkt im Komodo- oder 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
- Komodo als primäres Deployment-Werkzeug (GitOps)
- Portainer CE nur noch als Legacy-UI (wird in Sprint 5 abgeschaltet)
- Host-Hotfixes nur im Ausnahmefall — sofortige Nachpflege im Repo
No-Drift-Prinzip
Definition
Configuration Drift liegt vor, wenn der reale Zustand vom Git-Zustand abweicht.
Beispiele:
- laufender Container wurde manuell verändert
- Komodo-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
- erst danach weiterarbeiten
Ausnahmefall: Hotfix auf dem Host
Manchmal ist ein Live-Hotfix nötig. 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
- 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?
Komodo-Regeln
Komodo ist in diesem Setup:
- primäres Deployment-Werkzeug (GitOps)
- Stack-Manager (sync aus Gitea)
- Monitoring-/Status-Werkzeug
Deshalb gilt
- Stack-Konfiguration nur im Repository anpassen
- Komodo sync auslösen statt manuell deployen
- Wenn Komodo und Git voneinander abweichen, gewinnt Git
Portainer-Regeln (Legacy)
⚠️ Portainer CE ist in Ablösung. Abschaltung geplant in Sprint 5.
Portainer ist nicht mehr die Quelle der Wahrheit und wird nur noch als Fallback-UI genutzt.
Secrets-Regeln
- Secrets liegen niemals im Repository
- Secrets liegen unter
/mnt/user/appdata/secrets/ - Secrets werden über Datei-Mounts mit
_FILEVariablen oder Komodo Stack Environment Variables 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 (in
HOMELAB_ARCHITECTURE_MASTER_V2.md) - Compose-Datei im Repo anpassen
- Commit + Push
- Deploy über Komodo
- Test
- Dokumentation aktualisieren
- Sprint abschließen
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.
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.