Docker-Images bauen und veroeffentlichen / build-and-push (push) Successful in 1m53s
Traefik laeuft im Cluster in kube-system ohne Host-Netzwerk (geprueft). Die App ist damit nur noch fuer Traefik-Pods aus kube-system erreichbar (Namespace + Label), was die Umgehung der Login-/2FA-Rate-Limits per gefaelschtem X-Real-Ip aus anderen Pods verhindert. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
50 lines
1.5 KiB
YAML
50 lines
1.5 KiB
YAML
# 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:
|
|
name: artista-modelcamp-postgres
|
|
namespace: artista
|
|
spec:
|
|
podSelector:
|
|
matchLabels:
|
|
app: artista-modelcamp-postgres
|
|
policyTypes: ["Ingress"]
|
|
ingress:
|
|
- from:
|
|
- podSelector:
|
|
matchLabels:
|
|
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
|