docs: slice 2 — the pointer holds and class B keeps one destination each

rohana now resolves to 10.0.0.3 from inside the cluster and TLS still
validates over that path, both measured from a pod. wikijs reaches exactly
that one address and nothing else; a triggered synapse-backup ran through
and wrote its archive, so the storage box allowance carries. Nine open
workloads became five.

The DNS pointer needed a step the design did not know about. The ConfigMap
is mounted optional, and when it does not exist at pod start the kubelet
does not fill it in later - CoreDNS kept reporting the missing import for
two and a half minutes. A restart was required, and with maxUnavailable 1
on a single replica a rollout restart would have meant a cluster-wide DNS
gap. Scaled to two instead, let the new pod load the zone, removed the old
one, scaled back. DNS was served at every moment.

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 b0837b79cf
commit 20cfeae0a8
@@ -408,4 +408,48 @@ für kaputt, während er nur langsam ist.
**Status:** `DONE`
> **STOP — Slice-Review.** Freigegeben durch sorb, 2026-08-21.
### Slice 2 — DNS-Zeiger und Welle 2: Klasse B
- [x] **Zeiger setzen** — files: `apps/base/infra/coredns-custom.yaml` —
verify: Auflösung und TLS aus einem Pod — done.
- [x] **Welle 2 ausrollen** — files: `apps/production/networkpolicy.yaml` —
verify: Sperre und Erlaubnis je gegengeprüft — done.
**Evidence.**
Der Zeiger wirkt: `rohana.axion1337.de -> 10.0.0.3`, und die TLS-Prüfung
geht über diesen Weg durch — beides aus einem Pod gemessen, nicht am
Manifest gelesen.
Aus `wikijs`, nach der Welle:
```
CoreDNS (Positivkontrolle): ERREICHBAR
rohana privat (erlaubt): ERREICHBAR
Storage Box (nicht erlaubt): blockiert
1.1.1.1 (nicht erlaubt): blockiert
rohana oeffentlich: blockiert
```
Für die Job-artigen greift die Auswahl erst beim nächsten Lauf, also wurde
einer ausgelöst: `synapse-backup` lief **erfolgreich** durch und schrieb
sein Archiv — die Storage-Box-Erlaubnis trägt.
Bestand: von neun auf **fünf**. Offen bleiben nur noch die echt breiten:
`synapse-main`, `matrix-authentication-service`, `matrix-rtc-sfu`,
`coturn`, `clamav`.
⚠️ **Der DNS-Zeiger brauchte einen Handgriff, den der Entwurf nicht kannte.**
Die ConfigMap ist als *optional* eingehängt; war sie beim Start des Pods
nicht da, zieht Kubelet sie nicht nach — CoreDNS meldete zweieinhalb Minuten
lang weiter `No files matching import glob pattern`. Ein Neustart war nötig.
Weil das Deployment `maxUnavailable: 1` bei **einer** Replik führt, hätte
`rollout restart` eine clusterweite DNS-Lücke bedeutet; stattdessen auf zwei
Repliken hoch, den neuen Pod die Zone laden lassen, den alten entfernen,
zurück auf eine. Zu keinem Zeitpunkt war DNS ohne Bedienung.
**Status:** `DONE`
> **STOP — Slice-Review.**