Skip to content

Overview

Kyverno offers multiple policy types decribed below. Kyverno’s mission is to be the best policy engine for Kubernetes, and allow applying Kubernetes style policies everywhere incuding outside of Kubernetes.

As Kubernetes has evolved, Kyverno has also evolved its APIs. Kyverno initially supported JMESPath as a fast and effecient JSON processing language. Since 2022, Kubernetes has added extensive support for Common Expression Language (CEL). Hence, Kyverno has also evolved to fully support CEL. This shift allows Kyverno to maintain native compatibility and reduces the cognitive load for platform teams as there is one less thing to learn!

The new CEL based Kyverno ValidatingPolicy and ImageValidatingPolicy types were introduced in v1.14 (April 2025), and MutatingPolicy, GeneratingPolicy, and DeletingPolicy were added in v1.15 (July 2025).

Policy TypeDescriptionAPI VersionStatus
ValidatingPolicyValidate Kubernetes resources or JSON payloadspolicies.kyverno.io/v1Stable (since v1.18)
MutatingPolicyMutate new or existing resourcespolicies.kyverno.io/v1Stable (since v1.18)
GeneratingPolicyCreate or clone resources based on flexible triggerspolicies.kyverno.io/v1Stable (since v1.18)
DeletingPolicyDeletes matching resources based on a schedulepolicies.kyverno.io/v1Stable (since v1.18)
ImageValidatingPolicyVerify container image signatures and attestationspolicies.kyverno.io/v1Stable (since v1.18)
ClusterPolicyLegacy policy type with validate, mutate, generate, and verifyImages ruleskyverno.io/v1Deprecated (v1.19), removed in v1.20
CleanupPolicyLegacy policy type that deletes matching resources based on a schedulekyverno.io/v2Deprecated (v1.19), removed in v1.20

Each CEL-based policy type also has a namespaced variant (e.g. NamespacedValidatingPolicy, NamespacedMutatingPolicy, NamespacedGeneratingPolicy, NamespacedImageValidatingPolicy, and NamespacedDeletingPolicy) which applies only to resources in the namespace it is created in.

As of Kyverno v1.19, the CEL-based policy types provide full feature parity with the legacy ClusterPolicy, Policy, and CleanupPolicy types. See the migration guide to convert existing policies.

The following resource types are used together with policies. They are not being deprecated and continue to be supported with the CEL-based policy types:

Resource TypeDescriptionAPI VersionStatus
PolicyExceptionExempt resources from one or more policiespolicies.kyverno.io/v1Stable (since v1.19)
GlobalContextEntryCache Kubernetes resources or external API data for use in policieskyverno.io/v2Stable
UpdateRequestInternal type used for background generate and mutate processingkyverno.io/v2Stable (internal)
PolicyReport / ClusterPolicyReportPolicy results reportingwgpolicyk8s.io/v1alpha2Stable
EphemeralReport / ClusterEphemeralReportInternal intermediary report typereports.kyverno.io/v1Stable (internal)

Independent of resource deprecation, older API versions of retained resources are deprecated and rotate out following normal Kubernetes API version deprecation. The resources themselves are not going away — only re-apply your manifests with the newer API version:

ResourceDeprecated VersionUse Instead
All policies.kyverno.io policy typesv1alpha1v1
GlobalContextEntrykyverno.io/v2alpha1kyverno.io/v2
UpdateRequestkyverno.io/v1beta1 (not served)kyverno.io/v2

The ClusterPolicy, Policy, and CleanupPolicy types, and the legacy kyverno.io PolicyException, follow the schedule below:

ReleaseDateStatus
v1.17Feb 2026Marked for deprecation
v1.18Apr 2026Critical fixes only
v1.19Aug 2026Officially deprecated — final release with full support
v1.20Nov 2026 (estimated)Removed