Back to all tools
Kyverno logo

Kyverno

Kubernetes-native policy engine — validate, mutate, and generate resources with YAML policies.

0Free
Policy & Governance
Share:XLinkedInWhatsApp

Overview

Kyverno is a CNCF Graduated Kubernetes-native policy engine that validates, mutates, and generates Kubernetes resources using YAML-based policies — no new language to learn, just policies that look like Kubernetes manifests.

Key Features

  • YAML-based policies — no Rego or custom language, just Kubernetes-style manifests
  • Validate policies to reject non-compliant resources at admission time
  • Mutate policies to auto-inject labels, sidecars, or defaults
  • Generate policies to automatically create ConfigMaps or NetworkPolicies on namespace creation
  • Policy reports for auditing existing cluster resources against policies
  • CNCF Graduated with Kyverno Chainsaw for policy testing

Real-World Workflows

Enforce image registry policies

  1. 1Write a Kyverno ClusterPolicy to require images from approved registries only
  2. 2Deploy the policy in Audit mode first — see violations without blocking
  3. 3Switch to Enforce mode to actively block unapproved images
  4. 4Review policy reports to track compliance across all namespaces

Auto-generate network policies per namespace

  1. 1Create a Kyverno Generate policy triggered on new namespace creation
  2. 2Policy auto-creates a default-deny NetworkPolicy in every new namespace
  3. 3Teams never forget to add network policies — it happens automatically
  4. 4Combine with a Mutate policy to inject team labels into the namespace

Getting Started

# Install Kyverno via Helm
helm repo add kyverno https://kyverno.github.io/kyverno/
helm install kyverno kyverno/kyverno -n kyverno --create-namespace

# Apply a sample policy
kubectl apply -f - <<EOF
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-labels
spec:
  validationFailureAction: Audit
  rules:
  - name: check-team-label
    match:
      resources:
        kinds: [Pod]
    validate:
      message: 'Pod must have team label'
      pattern:
        metadata:
          labels:
            team: '?*'
EOF

Compare Alternatives

See how Kyverno stacks up against similar tools.