Kyverno is a CNCF-graduated Kubernetes-native policy engine that runs as a dynamic admission controller, enforcing governance through declarative YAML policies — no new language required. It validates, mutates, generates, verifies images, and cleans up resources at the cluster level, solving the gap between raw Kubernetes RBAC and fine-grained operational governance. Where tools like OPA Gatekeeper require learning Rego, Kyverno policies read like familiar Kubernetes manifests, dramatically reducing the barrier to policy-as-code adoption. As of Kyverno 1.17 (January 2026), the modern CEL-based policy types (ValidatingPolicy, MutatingPolicy, GeneratingPolicy, ImageValidatingPolicy, DeletingPolicy) reached GA status, while the older ClusterPolicy/Policy JMESPath-based types were officially deprecated with removal planned for v1.20 (October 2026).
What This Cheat Sheet Covers
This topic spans 22 focused tables and 167 indexed concepts. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
Table 1: Architecture and Core Concepts
Kyverno integrates directly into the Kubernetes admission control pipeline via dynamic admission webhooks, making every resource create/update/delete event a policy evaluation opportunity. Understanding the four controllers and how they divide responsibility is the key to sizing, troubleshooting, and securing a production Kyverno installation.
| Concept | Example | Description |
|---|---|---|
API Server → webhook → Kyverno Engine | Kyverno registers as a dynamic admission controller, receiving AdmissionReview requests from the Kubernetes API server via ValidatingWebhookConfiguration and MutatingWebhookConfiguration. | |
admissionController.replicas: 3 | • The main required controller • handles all webhook callbacks for validation, mutation, image verification, and policy exceptions | |
backgroundController.replicas: 2 | Optional controller that processes generate and mutate-existing rules by reconciling UpdateRequest intermediary resources. | |
reportsController.replicas: 2 | Optional controller responsible for creating and reconciling PolicyReports and ClusterPolicyReports from intermediary admission and background scan reports. | |
cleanupController.replicas: 2 | Optional controller that handles scheduled CleanupPolicy and ClusterCleanupPolicy resource deletions. |