{{- if .Values.networkPolicy.enabled }} # NetworkPolicy mínima del shape rest-api: bajo deny-all-default del namespace, permite: # - Ingress: Traefik Proxy (público) + Prometheus (scrape de /metrics). # - Egress: DNS, Harbor pull HTTPS. # Sin acceso a ns-addons (rest-api no tiene BD por diseño). # Nota: el cluster tenant usa Traefik Proxy + Gateway API en ns traefik-system # (ADR-060 Fase 1; reemplaza rke2-ingress-nginx que corría en kube-system). apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: {{ .Release.Name }} labels: {{- include "app.labels" . | nindent 4 }} spec: podSelector: matchLabels: {{- include "app.selectorLabels" . | nindent 6 }} policyTypes: [Ingress, Egress] ingress: # Tráfico HTTP desde Traefik Proxy (Gateway API, ADR-060 Fase 1). # El controller corre en ns traefik-system (lo instala el bundle traefik-bootstrap). - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: {{ .Values.networkPolicy.ingressControllerNamespace | default "traefik-system" }} ports: - protocol: TCP port: 8000 # Scrape de métricas Prometheus - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: cattle-monitoring-system podSelector: matchLabels: app.kubernetes.io/name: prometheus ports: - protocol: TCP port: 8000 egress: # DNS - to: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: kube-system ports: - protocol: UDP port: 53 - protocol: TCP port: 53 # Harbor pull (registro de imágenes) — HTTPS abierto - to: - ipBlock: cidr: 0.0.0.0/0 ports: - protocol: TCP port: 443 {{- end }}