approval-service: fix NetworkPolicy ingress to allow Traefik from kube-system (DEV-619)
All checks were successful
build-images / signing-service image (push) Successful in 26s
build-images / verification-service image (push) Successful in 27s
phase1-smoke / Phase 1 end-to-end smoke (push) Successful in 1m2s
build-images / approval-service image (push) Successful in 27s
build-images / dummy-sink image (push) Successful in 26s
validate / JSON Schema (ajv) (push) Successful in 21s
validate / Rego (opa fmt + opa test) (push) Successful in 15s
validate / DB (migrate up/down dry-run) (push) Successful in 27s
validate / Go (vet + test) (push) Successful in 1m22s

The Phase-1 NetworkPolicy from DEV-614 allowed ingress only from the
`pangolin` namespace, under the mistaken assumption that Traefik runs
there. In this cluster Traefik lives in `kube-system`; Pangolin only
renders the Traefik dynamic config and does not sit in the request
path. The policy therefore blocked external calls to
`approval.proofedmesh.basicstack.de`, which 502'd at Traefik.

Point the ingress rule at `kube-system/app.kubernetes.io/name=traefik`
and update the inline comment to match reality.

Verified: `curl -sS https://approval.proofedmesh.basicstack.de/healthz`
→ `{"status":"ok"}` (HTTP 200, LetsEncrypt cert via Traefik ACME).

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
CTO (Paperclip) 2026-10-25 21:23:59 +00:00
parent ddbd304659
commit a9a53ca31e

View file

@ -27,13 +27,18 @@ spec:
- Ingress - Ingress
- Egress - Egress
ingress: ingress:
# Public traffic reaches approval-service only via the Pangolin edge # Public traffic reaches approval-service via the Pangolin resource,
# (Traefik lives inside the Pangolin namespace). Keep this list # but the actual TCP connection is made by the Traefik ingress pod
# conservative — add additional callers on demand, not speculatively. # in kube-system (Pangolin only renders the Traefik config; it does
# not sit in the request path). Keep this list conservative — add
# additional callers on demand, not speculatively.
- from: - from:
- namespaceSelector: - namespaceSelector:
matchLabels: matchLabels:
kubernetes.io/metadata.name: pangolin kubernetes.io/metadata.name: kube-system
podSelector:
matchLabels:
app.kubernetes.io/name: traefik
ports: ports:
- port: 8080 - port: 8080
protocol: TCP protocol: TCP