diff --git a/apps/production/networkpolicy.yaml b/apps/production/networkpolicy.yaml index a11c781..84287fc 100644 --- a/apps/production/networkpolicy.yaml +++ b/apps/production/networkpolicy.yaml @@ -461,6 +461,11 @@ spec: - wikijs-gruppenpruefung - haproxy - draupnir + # Welle 2 (#0088): je genau ein Ziel, eigene Policy unten. + - synapse-backup + - wikijs-backup + - turn-secret-rotation + - wikijs # Welle 1 (#0088): kein externer Bedarf nachweisbar. - matrix-rtc-authorisation-service - wikijs-config @@ -589,3 +594,94 @@ spec: cidr: 10.42.0.0/16 - ipBlock: cidr: 10.43.0.0/16 +--- +# Welle 2 (#0088): Arbeitslasten mit genau EINEM externen Ziel. +# +# Eigene Policies statt Aufnahme in egress-nur-intern: Die Egress-Regeln einer +# Policy gelten fuer ALLE von ihr gewaehlten Pods. Haenge man die Storage Box an +# egress-nur-intern, bekaemen sie auch die vierzehn, die sie nicht brauchen. +# +# ⚠️ Die Namen stehen zusaetzlich in der NotIn-Liste von egress-block-metadata. +# Ohne das bliebe die breite Erlaubnis bestehen und diese Regeln waeren +# wirkungslos - NetworkPolicies sind additiv. +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: egress-storage-box + namespace: matrix +spec: + podSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - synapse-backup + - wikijs-backup + policyTypes: + - Egress + egress: + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: kube-system + ports: + - protocol: UDP + port: 53 + - protocol: TCP + port: 53 + - to: + - ipBlock: + cidr: 10.42.0.0/16 + - ipBlock: + cidr: 10.43.0.0/16 + # Hetzner Storage Box, borg ueber SSH. Einziges Ziel ausserhalb des + # Clusters - kein privater Weg dorthin bekannt (Stand 2026-08-21). + - to: + - ipBlock: + cidr: 91.98.246.178/32 + ports: + - protocol: TCP + port: 23 +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: egress-rohana + namespace: matrix +spec: + podSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + # Schreibt den rotierten TURN-Schluessel nach Gitea - die einzige + # bewusste Gitea-Ausnahme der Gruppe (AGENTS.md). + - turn-secret-rotation + # git-storage von Wiki.js: https://rohana.axion1337.de/sorb/ThreadNetWiki.git + # (aus der laufenden Konfiguration gelesen, nicht angenommen). + - wikijs + policyTypes: + - Egress + egress: + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: kube-system + ports: + - protocol: UDP + port: 53 + - protocol: TCP + port: 53 + - to: + - ipBlock: + cidr: 10.42.0.0/16 + - ipBlock: + cidr: 10.43.0.0/16 + # rohana ueber das PRIVATE Netz. Der oeffentliche Name zeigt seit + # coredns-custom.yaml hierher; das Zertifikat gilt auch auf diesem Weg. + - to: + - ipBlock: + cidr: 10.0.0.3/32 + ports: + - protocol: TCP + port: 443