Kyverno is typically treated as a security tool—reviewed by security teams, deployed with a handful of validation policies, and left mostly idle. The author argues this framing wastes most of the tool's capability: Kyverno's four verbs (validate, mutate, generate, verify images) are mostly constructive, not gate-based, and platform teams get far more value from mutation and generation than security teams do from validation alone. Concrete platform patterns include namespace furnishing, sidecar injection, image reference rewriting, default resource requests, and ownership labeling. The core reframe: Kyverno policies are a platform primitive—an abstraction like Pods or Services—that turns organizational beliefs into automatic, self-service enforcement rather than documentation or tribal knowledge. This is framed as the opening post in a longer series on policy-driven platform engineering.

7m read timeFrom cncf.io
Post cover image
Table of contents
The problem with the security framingOkay, so what’s a “platform primitive”What platform teams actually do with itPolicy is how the platform expresses intentWhat falls out of thisThe takeaway

Questions this post answers

What are the four main capabilities of Kyverno besides blocking bad configurations?

Kyverno supports four verbs: validate, mutate, generate, and verify images. Validation acts as a gate that blocks non-compliant resources, but mutation changes resources on admission (like injecting sidecars or rewriting image references), generation creates new resources automatically (like default NetworkPolicies for new namespaces), and image verification establishes trust in signed images. Explore daily.dev for more perspectives on getting full value from policy engines like Kyverno.

How can Kyverno be used to automatically rewrite container image references to an internal mirror?

Kyverno can mutate Pod specs at admission time to rewrite image references, such as changing nginx:1.25 to mirror.internal/nginx:1.25, so developers don't need to remember mirror prefixes manually. This avoids flaky builds caused by rate limits on public registries like Docker Hub while keeping developer manifests clean. Developers building resilient image pipelines can find similar platform patterns on daily.dev.

What does it mean for a Kubernetes tool to be considered a platform primitive?

A platform primitive is a small, well-understood building block with four properties: it abstracts complexity so users don't need to understand underlying machinery, it provides automatic guarantees, it composes with other primitives to build larger systems, and it's available self-service rather than through a ticket queue. Pods, Services, and ConfigMaps are examples, and Kyverno policies are argued to fit this same category. Platform teams weighing new abstractions can track evolving practices like this on daily.dev.

15.7K Impressions2 Comments