Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions kubernetes/infra/ingress/cloudflared/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@ Cloudflare.

- The tunnel token is committed only as a SealedSecret and mounted as a read-only file.
- The pods do not receive Kubernetes API credentials and run as a non-root user with a read-only filesystem.
- Egress permits cluster DNS, the named Cilium Gateway Service, and Cloudflare on TCP or UDP `7844` with TCP
`443` for management and fallback. The Gateway Service rule intentionally omits `toPorts` because Cilium
evaluates L4 policy after Service translation and represents the listener with a synthetic target port.
- Egress permits cluster DNS, Cilium's `ingress` identity, the Grafana backend on TCP `3000`, the Hubble UI
backend on TCP `8081`, and Cloudflare on TCP or UDP `7844` with TCP `443` for management and fallback.
Cilium Gateway hairpin traffic crosses the `ingress` identity before reaching a routed backend, so the
policy allows those identities directly instead of relying on the selectorless Gateway Service.
- Prometheus is the only permitted inbound consumer of the connector metrics endpoint.
- Cloudflare route configuration remains remotely managed until the external boundary is imported into
OpenTofu. The dashboard configuration is therefore an explicit temporary manual dependency.
Expand Down
22 changes: 18 additions & 4 deletions kubernetes/infra/ingress/cloudflared/network-policy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,24 @@ spec:
rules:
dns:
- matchPattern: "*"
- toServices:
- k8sService:
serviceName: cilium-gateway-lan-gateway
namespace: gateway-system
- toEntities:
- ingress
- toEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: monitoring
k8s:app.kubernetes.io/name: grafana
toPorts:
- ports:
- port: "3000"
protocol: TCP
- toEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: kube-system
k8s:app.kubernetes.io/name: hubble-ui
toPorts:
- ports:
- port: "8081"
protocol: TCP
- toEntities:
- world
toPorts:
Expand Down
Loading