diff --git a/k8s/08-networkpolicy.yaml b/k8s/08-networkpolicy.yaml index 1903d73..0c83696 100644 --- a/k8s/08-networkpolicy.yaml +++ b/k8s/08-networkpolicy.yaml @@ -1,9 +1,5 @@ -# Die Datenbank ist nur fuer Pods mit dem Label db-client=true erreichbar -# (App inkl. Migration, Worker, Admin-Anlage). Beruehrt weder Traefik noch -# cert-manager. -# -# Bewusst KEINE Policy vor der App (wie bei Wabenhain/ApiCore): laeuft -# Traefik im Host-Netzwerk, wuerde sie die Website aussperren. +# Datenbank: nur fuer Pods mit dem Label db-client=true erreichbar +# (App inkl. Migration, Worker, Admin-Anlage). apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: @@ -21,3 +17,33 @@ spec: db-client: "true" ports: - port: 5432 +--- +# Website: nur ueber Traefik erreichbar. Traefik laeuft in diesem Cluster +# (RKE2) in kube-system und NICHT im Host-Netzwerk — geprueft mit: +# kubectl get pods -A -l 'app.kubernetes.io/name in (traefik,rke2-traefik)' \ +# -o custom-columns=NS:.metadata.namespace,HOSTNET:.spec.hostNetwork +# Namespace UND Label muessen passen; das Label allein koennte jeder setzen. +# Der Zertifikats-Solver von cert-manager ist ein eigener Pod und davon nicht +# betroffen. +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: artista-modelcamp-app + namespace: artista +spec: + podSelector: + matchLabels: + app: artista-modelcamp-app + policyTypes: ["Ingress"] + ingress: + - from: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: kube-system + podSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: [traefik, rke2-traefik] + ports: + - port: 3000