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, 131 flashcards. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
A jump-to index of every table row in this cheat sheet.
An interactive map of every table and concept in this topic.
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. | ||
Watches installed policies → updates webhook config | Dynamically configures the webhooks so the API server only forwards requests for resource kinds matched by installed policies, minimizing unnecessary traffic. | ||
Watches/renews TLS Secrets | Watches and auto-renews the TLS certificates (stored as Kubernetes Secrets) needed for the webhook. | ||
failurePolicy: Fail (default) | • Default behavior: if Kyverno is unreachable, the API server blocks the request • ensures security-by-default but risks cluster inoperability if Kyverno namespace is not excluded | ||
failurePolicy: Ignore | • If Kyverno webhook is unavailable, the request is allowed through • trades security for availability — recommended only for non-critical or optional policies | ||
admissionController.replicas: 3 | • Production installs should run the admission controller with at least 3 replicas • minimum supported HA count for leader election and certificate management |