Skip to main content
Hand-authored illustration. The YAML on this page illustrates the shape of the policies kguardian generates for this workload — it is not captured generator output. Exact metadata, rule grouping, and selectors produced by kubectl kguardian gen will differ. Regeneration of this gallery from a live cluster is planned.

Workload

A standard nginx:1.27 deployment serving static HTTP on port 80. The pod is fronted by a ClusterIP service, scraped occasionally by curl pods in the same namespace, and resolves DNS via the cluster’s CoreDNS.

Generated NetworkPolicy

Generated CiliumNetworkPolicy

Generated seccomp profile (excerpt)

Full profile contains 104 syscall names. Representative excerpt:

What kguardian observed

The controller saw inbound TCP connections to port 80 originating from curl-pod in the same namespace, outbound UDP/53 (and a small number of fallback TCP/53) to the kube-system CoreDNS pods, and the typical syscall mix for an nginx worker process: socket setup, epoll-based event loop, sendfile for static responses, and read/write on the listening sockets. No outbound traffic to upstream HTTP services was seen, so no egress allow-rules for upstream hosts were generated. The generator emits one rule per observed peer — pod plus namespace selectors for in-cluster peers — so each source appears as its own rule.