docs: Flux upgraded itself, fourteen critical findings to zero

The controllers that deploy everything else carried fourteen critical and 231
high findings. All four go to zero critical and high drops to 48, measured on
the target images first as usual.

The release manifest could not be used as it stands: it carries seven
deployments where we run four, so dropping it in would have added three
components nobody here operates. Generated for our set instead and checked
against what it replaces — same four deployments, four service accounts, eleven
CRDs.

For the second time today an intermediate state looked like damage and was none.
Right after the restart two HelmReleases read Ready=False with 'HelmChart does
not have an artifact' while their workloads kept running; the source controller
was rebuilding its artifacts. Rolling back on first sight would have aborted
something that was working.
This commit is contained in:
Thore Cimbal
2026-08-21 12:00:00 +00:00
parent 6a520c86e3
commit 62841c87f8
2 changed files with 39 additions and 0 deletions
+37
View File
@@ -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.
@@ -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