Rollout in den Cluster: Rückgrat-Runbook, T3, T4, T6 und Beute L1 (Freigabe Inhaber) #28

Open
opened 2026-10-16 05:58:32 +00:00 by Nick.Rosenloecher · 2 comments
Owner

Ziel

Den Stand von origin/main ins Cluster bringen. Weil main alles enthält, gehen Paket 0, Rückgrat, T3, T4, T6, ERP-Export und Beute L1 gemeinsam live – getrennt nach den Schritten des Rückgrat-Runbooks, jeder Schritt mit Freigabe des Inhabers.

Umgesetzt

  • Alles gebaut, getestet und gemergt; CI-Image-Builds auf b48fb157 grün (Lauf 2052/2053)
  • Overlay-ConfigMaps tragen seit 2026-10-15 die Live-Werte (6e3e9aee); Skript für fehlende Secrets (deploy/k8s/scripts/ensure-secrets.sh)
  • Live heute: Backend sha-f5b1964 (seit 2026-10-12), Frontend-Image vom 2026-10-12, Postgres 18.6-alpine, CronJob apicore-db-backup, PVC apicore-data; im Namespace nur die drei Ingress-Policies aus rke2-cluster

Offen

  • Freigabe Rückgrat (Runbook im Plan 2026-10-13-plattform-rueckgrat.md):
    • Schritt 0: Live-Digests ins Overlay, neue Digests bereithalten, Kubernetes-Version prüfen
    • Schritt 1: Overlay auf Ist-Stand bringen (Hosts und TLS noch Platzhalter example.com), kubectl diff leer
    • Schritt 2: NetworkPolicies schärfen, danach die apicore-Kopien von allow-from-traefik und allow-same-namespace im rke2-cluster entfernen; Zertifikats-Erneuerung prüfen (Frontend 2026-10-25, Backend 2026-10-26)
    • Schritt 3: Rollen, Worker, CronJobs, Pod-Härtung (Vorprüfungen und Secrets: #29)
    • Schritt 4: Schlüssel trennen (rekey), danach JWT-Secrets rotieren (siehe #30)
    • Schritt 5: HPA einschalten
  • Freigabe T4: vorher App-Backup und pg_dump, Prüfabfrage colonyStrength > 40, danach Prüfabfragen aus T4-Spec 4.12; Telegram-Schritte 9.1–9.4 (Bot, Secret, Deploy, Test-Erinnerung)
  • Freigabe T6: nach dem Rollout Inhaber-Checkliste aus T6-Spec 13.3 (#34)
  • Zusatz mit eigener Freigabe: Cloudflare-Cache- und Rate-Limit-Regel für /api/v1/public/batches/*
  • Nach jedem Schritt: TASKS.md und Status in den Detail-Issues nachziehen

Abhängigkeiten / Blocker

Blockiert: jeder Schritt braucht die ausdrückliche Freigabe des Inhabers (Memory: Rollout nur mit Freigabe). Secrets legt der Inhaber an (#29).

Grundlage

docs/superpowers/plans/2026-10-13-plattform-rueckgrat.md Abschnitt „Rollout-Runbook“, T4-Spec §15, T6-Spec §13, ARCHITECTURE.md Abschnitt 7. Pakete: #12, #13, #14, #15, #16, #17, #18.

Status

Code: ja · Geprüft: ja · Gemergt: ja · Produktiv: nein
Stand: 2026-10-16 (Quelle: git origin/main b48fb157, Cluster-Abfrage 2026-10-16, Session-Status vs-code-ff, Memory)

## Ziel Den Stand von `origin/main` ins Cluster bringen. Weil `main` alles enthält, gehen Paket 0, Rückgrat, T3, T4, T6, ERP-Export und Beute L1 gemeinsam live – getrennt nach den Schritten des Rückgrat-Runbooks, jeder Schritt mit Freigabe des Inhabers. ## Umgesetzt - [x] Alles gebaut, getestet und gemergt; CI-Image-Builds auf b48fb157 grün (Lauf 2052/2053) - [x] Overlay-ConfigMaps tragen seit 2026-10-15 die Live-Werte (6e3e9aee); Skript für fehlende Secrets (`deploy/k8s/scripts/ensure-secrets.sh`) - [x] Live heute: Backend `sha-f5b1964` (seit 2026-10-12), Frontend-Image vom 2026-10-12, Postgres `18.6-alpine`, CronJob `apicore-db-backup`, PVC `apicore-data`; im Namespace nur die drei Ingress-Policies aus `rke2-cluster` ## Offen - [ ] Freigabe Rückgrat (Runbook im Plan `2026-10-13-plattform-rueckgrat.md`): - [ ] Schritt 0: Live-Digests ins Overlay, neue Digests bereithalten, Kubernetes-Version prüfen - [ ] Schritt 1: Overlay auf Ist-Stand bringen (Hosts und TLS noch Platzhalter `example.com`), `kubectl diff` leer - [ ] Schritt 2: NetworkPolicies schärfen, danach die `apicore`-Kopien von `allow-from-traefik` und `allow-same-namespace` im rke2-cluster entfernen; Zertifikats-Erneuerung prüfen (Frontend 2026-10-25, Backend 2026-10-26) - [ ] Schritt 3: Rollen, Worker, CronJobs, Pod-Härtung (Vorprüfungen und Secrets: #29) - [ ] Schritt 4: Schlüssel trennen (`rekey`), danach JWT-Secrets rotieren (siehe #30) - [ ] Schritt 5: HPA einschalten - [ ] Freigabe T4: vorher App-Backup und `pg_dump`, Prüfabfrage `colonyStrength > 40`, danach Prüfabfragen aus T4-Spec 4.12; Telegram-Schritte 9.1–9.4 (Bot, Secret, Deploy, Test-Erinnerung) - [ ] Freigabe T6: nach dem Rollout Inhaber-Checkliste aus T6-Spec 13.3 (#34) - [ ] Zusatz mit eigener Freigabe: Cloudflare-Cache- und Rate-Limit-Regel für `/api/v1/public/batches/*` - [ ] Nach jedem Schritt: `TASKS.md` und Status in den Detail-Issues nachziehen ## Abhängigkeiten / Blocker Blockiert: jeder Schritt braucht die ausdrückliche Freigabe des Inhabers (Memory: Rollout nur mit Freigabe). Secrets legt der Inhaber an (#29). ## Grundlage `docs/superpowers/plans/2026-10-13-plattform-rueckgrat.md` Abschnitt „Rollout-Runbook“, T4-Spec §15, T6-Spec §13, `ARCHITECTURE.md` Abschnitt 7. Pakete: #12, #13, #14, #15, #16, #17, #18. ## Status Code: ja · Geprüft: ja · Gemergt: ja · Produktiv: nein Stand: 2026-10-16 (Quelle: git origin/main b48fb157, Cluster-Abfrage 2026-10-16, Session-Status vs-code-ff, Memory)
Nick.Rosenloecher added the art/technikprio/hochblockiertstatus/offen labels 2026-10-16 05:58:32 +00:00
Author
Owner

Neue Voraussetzung für den nächsten Backend-Rollout (T7, Commit 9795f980, noch nicht gepusht): Ein Backend-Image ab diesem Stand startet in Produktion in keiner Rolle (api inkl. initContainer, worker, CronJobs), solange VOICE_ENCRYPTION_KEY nicht in apicore-backend-secret steht.

Reihenfolge beim Rollout:

  1. deploy/k8s/scripts/ensure-secrets.sh ausführen (legt den Schlüssel zufällig im Cluster an, kein Wert in Kommandozeile oder Log).
  2. Den Schlüssel wie die anderen Schlüssel sichern.
  3. Erst dann das neue Image ausrollen.

Außerdem: Seed-Fix #45 ist im selben Stand; nach dem Rollout ein mögliches zusätzliches Konto [email protected] prüfen. Siehe ARCHITECTURE Annahme 22.

**Neue Voraussetzung für den nächsten Backend-Rollout (T7, Commit 9795f980, noch nicht gepusht):** Ein Backend-Image ab diesem Stand startet in Produktion in keiner Rolle (api inkl. initContainer, worker, CronJobs), solange `VOICE_ENCRYPTION_KEY` nicht in `apicore-backend-secret` steht. Reihenfolge beim Rollout: 1. `deploy/k8s/scripts/ensure-secrets.sh` ausführen (legt den Schlüssel zufällig im Cluster an, kein Wert in Kommandozeile oder Log). 2. Den Schlüssel wie die anderen Schlüssel sichern. 3. Erst dann das neue Image ausrollen. Außerdem: Seed-Fix #45 ist im selben Stand; nach dem Rollout ein mögliches zusätzliches Konto `[email protected]` prüfen. Siehe ARCHITECTURE Annahme 22.
Author
Owner

Whisper-Image erstmals in CI gebaut (c53810b8, alle Läufe grün): git.encry.de/nick.rosenloecher/apicore-whisper:sha-c53810b, Index-Digest sha256:bb0eb6cd0168d0acb79a220699d0c8e254df4616d6dae78c109501566e100cd1. Im Overlay stehen wie bei Backend und Frontend noch Platzhalter-Digests; sie werden beim Rollout eingetragen.

Reihenfolge T7 im Rollout (Plan Task 25): 0. ensure-secrets.sh (VOICE_ENCRYPTION_KEY) und sichern; 1. Backend-Image mit Migration (VOICE_RECORDING_ENABLED=false); 2. Whisper-Digest ins Overlay; 3. Komponente voice an, erster Lauf von Hand, Logs auf Inhalte prüfen; 4. Messung (RAM gegen 1280Mi, Dauer); 5. VOICE_RECORDING_ENABLED=true. Jeder Schritt nur mit Freigabe.

Whisper-Image erstmals in CI gebaut (c53810b8, alle Läufe grün): `git.encry.de/nick.rosenloecher/apicore-whisper:sha-c53810b`, Index-Digest `sha256:bb0eb6cd0168d0acb79a220699d0c8e254df4616d6dae78c109501566e100cd1`. Im Overlay stehen wie bei Backend und Frontend noch Platzhalter-Digests; sie werden beim Rollout eingetragen. Reihenfolge T7 im Rollout (Plan Task 25): 0. `ensure-secrets.sh` (VOICE_ENCRYPTION_KEY) und sichern; 1. Backend-Image mit Migration (`VOICE_RECORDING_ENABLED=false`); 2. Whisper-Digest ins Overlay; 3. Komponente `voice` an, erster Lauf von Hand, Logs auf Inhalte prüfen; 4. Messung (RAM gegen 1280Mi, Dauer); 5. `VOICE_RECORDING_ENABLED=true`. Jeder Schritt nur mit Freigabe.
Sign in to join this conversation.