diff --git a/docs/design/2026-08-21-cve-remediation.md b/docs/design/2026-08-21-cve-remediation.md index 272900b..2b02c40 100644 --- a/docs/design/2026-08-21-cve-remediation.md +++ b/docs/design/2026-08-21-cve-remediation.md @@ -497,3 +497,40 @@ Release. Seine 5 als „behebbar" gezählten CRITICAL sind es für uns **nicht** Ein Paket-Fix nützt nichts, solange niemand das Image neu baut. ⚠️ Das ist eine Verfeinerung von Haufen A insgesamt — „behebbar" heißt *Paket hat einen Fix*, nicht *es gibt ein neueres Image*. + +### Haufen A, dritter Posten: Flux v2.8er-Reihe → v2.9.4 + +Die vier Controller, die alles andere ausrollen, trugen selbst **14 CRITICAL und +231 HIGH**. Am Zielimage vorab gemessen: + +| Controller | CRIT alt → neu | HIGH alt → neu | +|---|---|---| +| `source-controller` v1.8.2 → v1.9.4 | 3 → **0** | 63 → 15 | +| `kustomize-controller` v1.8.3 → v1.9.4 | 5 → **0** | 63 → 10 | +| `helm-controller` v1.5.3 → v1.6.3 | 3 → **0** | 52 → 10 | +| `notification-controller` v1.8.3 → v1.9.3 | 3 → **0** | 53 → 13 | +| **Summe** | **14 → 0** | **231 → 48** | + +⚠️ **Das Release-Manifest durfte nicht einfach eingesetzt werden.** `install.yaml` +von v2.9.4 trägt **sieben** Deployments; wir betreiben **vier**. Ein Einsetzen +hätte `image-automation-controller`, `image-reflector-controller` und +`source-watcher` hinzugefügt — Bausteine, die niemand hier will. Das Manifest +wurde deshalb mit dem Flux-CLI für genau unseren Satz erzeugt und gegen den +Bestand geprüft: 4 Deployments, 4 ServiceAccounts, 11 CRDs, identisch zur +abgelösten Fassung. + +**Flux rüstet sich selbst um** — die `flux-system`-Kustomization verwaltet +`gotk-components.yaml`. Der Rückweg ist ein `kubectl apply` der Vorgängerfassung +direkt aus git; der Commit davor ist in der Commit-Nachricht benannt. + +**Nach der Umrüstung geprüft:** alle vier Controller 1/1, alle fünf +Kustomizations `Ready=True` auf der neuen Revision, GitRepository gesund, alle +fünf HelmReleases `Ready=True`. + +⚠️ **Ein Zwischenstand sah nach Schaden aus und war keiner** — zum zweiten Mal +heute. Unmittelbar nach dem Neustart standen `alloy` und `kube-state-metrics` auf +`Ready=False` mit *„HelmChart does not have an artifact"*. Die Arbeitslasten +liefen die ganze Zeit (`Released=True InstallSucceeded`); der `source-controller` +baute nur seinen Artefakt-Bestand neu auf. Nach dem Abwarten: beide `True`. +Hätte ich beim ersten Blick zurückgerollt, hätte ich einen Vorgang abgebrochen, +der gerade richtig lief. diff --git a/docs/ledger/2026-08-21-cve-remediation.md b/docs/ledger/2026-08-21-cve-remediation.md index 54eb5d2..ed00293 100644 --- a/docs/ledger/2026-08-21-cve-remediation.md +++ b/docs/ledger/2026-08-21-cve-remediation.md @@ -38,6 +38,7 @@ Nachfrage erfuellt wurde (`docs/wiki/stolpersteine/aar-pflicht-ohne-werkzeug.md` | Authentik 4 | c9a3ae6 | DONE | Rueckrollung wieder scharf. | | Haufen C | 4758e35, 59c75c8 | DONE_WITH_CONCERNS | Einengung gebaut; ⚠️ der erste Commit war UNGETESTET, siehe Notes. Wirkt erst nach Redeploy auf CFGMON. | | cert-manager 1–7 | 93155c2 … 13aecc8 | DONE | v1.14.0 -> v1.21.1 in sieben Stufen, je 3/3 Deployments und 15/15 Zertifikate. | +| Flux | fcf3169 | DONE | Vier Controller auf den v2.9.4-Satz; 14 CRITICAL -> 0, 231 HIGH -> 48. | ## Ladder @@ -50,6 +51,7 @@ Nachfrage erfuellt wurde (`docs/wiki/stolpersteine/aar-pflicht-ohne-werkzeug.md` | ob Flux beim Fehlschlag etwas Eigenes tut | CRD: `strategy` defaults to `rollback`, Remediation zwischen jedem Versuch, `remediateLastFailure` bei retries>0 ebenfalls scharf | built: eine Entschaerfung (`retries: 0`) fuer die Dauer des Sprungs — die einzige gebaute Sache, die nicht Fassungsnummer war | df6d291 | | ob es ein neueres Wiki.js-Image gibt | `2.5` (gleitend) traegt 12 CRITICAL, das „neuere" Release-Tag `2.5.277` traegt 40 | reused: der laufende Stand — das Update waere eine Verschlechterung gewesen | | | ob Draupnir eine neuere Fassung hat | `v3.1.0` ist die neueste; `develop` ist kein Release | reused: nichts angefasst — „Paket hat einen Fix" heisst nicht „es gibt ein Image damit" | | +| ein Manifest fuer genau unseren Flux-Komponentensatz, statt das Release-Manifest zu nehmen | `install.yaml` traegt 7 Deployments, wir betreiben 4 — das CLI erzeugt den passenden Satz | reused: `flux install --export --components=...` statt Handfilterung von 270 kB YAML | fcf3169 | | eine Quelle fuer die Einengung von Haufen C, statt einer Ausschlussliste | die Herleitung bildet den laufenden Bestand ohnehin | reused: dieselbe Menge als Filter — keine zweite Liste (ADR-0026) | 4758e35 | ## Notes