docs: wave 1 is live, and rehearsing the rollback corrected Gate 2

Six deploy and helper workloads are restricted; the count of workloads
without a narrow rule went from fifteen to nine. The block is proven from
inside the pod - three truly external targets refused, CoreDNS answering as
the positive control - and the pod is distroless, so the probe ran in an
ephemeral container sharing its network namespace and labels. That is the
method the remaining waves need and it is written down rather than
rediscovered.

Rehearsing the rollback corrected a claim from Gate 2. "Flux makes a git
revert a rollback of minutes" holds only with an addition. The revert took
about forty seconds; restoring afterwards did nothing for four minutes,
although git.lab had the commit and the mirror reported finished. Only a
forced refetch of the GitRepository moved it.

So a rollback is a revert plus a nudge to the source. Someone who only
reverts and waits sees nothing for up to a poll interval and may conclude
the rollback itself is broken while it is merely slow. That belongs in the
record before a wave touches something users notice.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F2Q4Ri8NGwyTZzScvKnWFM
This commit is contained in:
Thore Cimbal
2026-08-21 12:00:00 +00:00
co-authored by Claude Opus 5
parent a7d561b67f
commit b0837b79cf
3 changed files with 68 additions and 5 deletions
+1 -1
View File
@@ -89,7 +89,7 @@ Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md).
| Design | Gate | Title |
|---|---|---|
| [2026-08-21-egress-vollstaendig](docs/design/2026-08-21-egress-vollstaendig.md) | gate-3 | Design: Den ausgehenden Verkehr zu Ende schließen (#0088) |
| [2026-08-21-egress-vollstaendig](docs/design/2026-08-21-egress-vollstaendig.md) | gate-4 | Design: Den ausgehenden Verkehr zu Ende schließen (#0088) |
## ADRs (24)
+65 -4
View File
@@ -1,6 +1,6 @@
---
type: design
status: gate-3
status: gate-4
date: 2026-08-21
size: L
related:
@@ -345,6 +345,67 @@ einem Pod heraus gezeigt werden, dass `rohana.axion1337.de` auf `10.0.0.3`
auflöst **und** die TLS-Prüfung weiterhin durchgeht — beides in einem Lauf,
sonst ist „geht noch" wieder eine Vermutung.
> **STOP — Freigabe für Gate 3** samt diesem Nachtrag. Der CoreDNS-Zeiger
> wirkt clusterweit; das ist die einzige Änderung hier, die über die
> NetworkPolicies hinausgeht.
> **Gate 3 freigegeben durch sorb, 2026-08-21**, samt Nachtrag und
> CoreDNS-Zeiger.
## Gate 4 — Vertical Slices
### Slice 1 — Welle 1: Klasse A, sechs Arbeitslasten
- [x] **Beide Listen erweitern** — files: `apps/production/networkpolicy.yaml`
— action: die sechs Namen in `egress-block-metadata` (NotIn) **und**
`egress-nur-intern` (In) — verify: Mengen deckungsgleich, YAML parst —
done: 14/14, keine einseitigen Einträge.
- [x] **Ausrollen und Wirkung messen** — verify: Bestand neu erhoben, Sperre
aus dem Pod gegengeprüft — done, Belege unten.
- [x] **Rückweg proben** — verify: `git revert`, Ausgangszustand messen,
wieder herstellen — done, mit einer Korrektur an Gate 2.
**Evidence.**
Bestand nach der Welle — von 15 offenen auf **9**:
```
clamav, coturn, matrix-authentication-service, matrix-rtc-sfu,
synapse-backup, synapse-main, turn-secret-rotation, wikijs, wikijs-backup
```
Sperre gegengeprüft aus `matrix-rtc-authorisation-service`:
```
CoreDNS (Positivkontrolle): ERREICHBAR
Storage Box (echt extern): blockiert
1.1.1.1 (echt extern): blockiert
rohana oeffentlich: blockiert
```
⚠️ **Der Pod ist distroless — ohne Shell kein Test.** Gemessen wurde über
einen **ephemeren Container**, der den Netz-Namensraum und die Labels des
Pods teilt; die Policy gilt für ihn genauso. Das ist der Weg, den die
restlichen Wellen für distroless Arbeitslasten brauchen, und er gehört
deshalb hier festgehalten und nicht neu erfunden.
**Der Rückweg wurde geprobt — und hat Gate 2 korrigiert.**
| Schritt | Wirkung |
|---|---|
| `git revert` der Welle | nach ~40 s wieder 8 Namen |
| Wiederherstellen | **vier Minuten keine Wirkung** |
| Quelle manuell angestoßen | binnen ~90 s wieder 14 Namen |
Gate 2 sagte: *„Flux macht ein `git revert` zum Rückweg von Minuten."* Das
stimmt **nur mit einem Zusatz**. Der Rückweg hängt an zwei Wartezeiten, die
niemand steuert: dem Push-Spiegel nach Gitea und Flux' Abrufintervall auf
die Quelle. Beim Revert traf es günstig, beim Wiederherstellen nicht — vier
Minuten Stillstand, obwohl git.lab den Commit längst hatte und der Spiegel
`status=finished` meldete. Erst ein erzwungenes Neuladen der `GitRepository`
löste es.
**Für den Ernstfall heißt das:** Ein Rückweg ist ein `git revert` **plus**
ein Anstoßen der Quelle. Wer nur revertiert und wartet, sieht bis zu einem
Abrufintervall lang keine Wirkung — und hält womöglich den Rückweg selbst
für kaputt, während er nur langsam ist.
**Status:** `DONE`
> **STOP — Slice-Review.**
@@ -14,6 +14,7 @@ related:
| gate | commit | approval | status | note |
|---|---|---|---|---|
| 3 | a7d561b | sorb | DONE | Klassen, Regelform, rohana intern statt extern. |
| 2 | 1dc5439 | sorb | DONE | Drei Klassen, CIDR-only, ClamAV als harter Fall benannt. |
| 1 | 04b1b84 | sorb | DONE | Umfang und vier zaehlbare Abnahmekriterien; #0088 auf in-progress. |
@@ -29,6 +30,7 @@ related:
| ob die Sperre von gestern ueberhaupt beisst, bevor neue dazukommen | drei echt externe Ziele blockiert, die Knoten-Adresse erreichbar | built: nichts — aber der Fund aendert die Klasseneinteilung und gehoert ins Issue | |
| einen privaten Weg zu rohana, auf sorbs Einwand hin | `10.0.0.3:443` antwortet als Gitea und traegt ein gueltiges Let's-Encrypt-Zertifikat fuer den oeffentlichen Namen | reused: der vorhandene private Pfad statt einer Erlaubnis nach draussen — kein Dienst muss umkonfiguriert werden | |
| einen Weg, den Namen intern umzubiegen | die Corefile importiert bereits `/etc/coredns/custom/*.override`; nur die ConfigMap fehlt | reused: der vorgesehene k3s-Mechanismus, keine Aenderung an der Corefile selbst | |
| einen Weg, einen distroless Pod zu pruefen | `kubectl debug` haengt einen ephemeren Container in denselben Netz-Namensraum, die Policy gilt fuer ihn genauso | reused: Bordmittel statt Sidecar oder Image-Aenderung | |
## Notes