Guard rails
Each environment has a policy in system.yaml: audit, enforce or off. Unless it is off, the platform renders a namespaced Kyverno policy per environment that encodes its conventions for every Deployment:
- numeric non-root user, read-only root filesystem, no privilege escalation, all capabilities dropped,
- no privileged containers, host namespaces or
hostPathvolumes, - CPU and memory requests and a memory limit,
- the
app.kubernetes.io/part-oflabel, - images only from allowed registries (derived from your components’ images, plus resource images and the system’s
registries), - no
:latestor untagged images outside dev.
Modes per environment: audit (report), enforce (deny) or off; defaults are Audit in dev and staging, Enforce in production.
Shift-left: devbox run validate (and CI) build each overlay and evaluate it with the Kyverno CLI, so a violating change fails its pull request in every mode. Together with pinned CI actions, image scanning with an SBOM and least-privilege tokens this is the platform’s security posture (ADR-019, ADR-022).