mrkeyoor.com_
Fri 16 Oct 18:52 UTC
Dev Toolsevaluationupdated 10 Oct 2026

kyverno review

Kyverno applies rules to Kubernetes resources as they are submitted and through background scans. It helps platform teams reject unwanted configurations, change resource settings, generate related resources, and verify container image signatures.

+22stars / 7d
Verdict

Our Kyverno run built successfully in 457 seconds and passed all 284 reported tests in 725 seconds, making commit fe09190 a credible source setup for a Kubernetes policy trial. Use it when resource validation, mutation, or generation solves a concrete platform problem and someone owns webhook recovery. Keep RBAC and infrastructure protection in place, as the README explicitly requires.

We ran it

Lab card: what happened when we ran kyvernoScreenshot of kyverno (kyverno.io)
Install✓ · 97s1136 packages
Build✓ · 457s
Tests✓ · 725s284 passed · 0 failed of 284 (go test)
Repo9736 files~385,963 lines of source · 43.5 MB · 44 CI workflows · tests dir

Answers from our run

Does kyverno build from source?

Dependencies installed in 97 seconds (1136 packages), and the build succeeded in 457 seconds. We cloned commit fe09190 into a clean Debian container with 3 CPUs and no project-specific setup.

Do kyverno's tests pass?

Yes: 284 of 284 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use kyverno?

Teams seeking a replacement for Kubernetes RBAC: the README says Kyverno complements access control.

What are the alternatives to kyverno?

Gatekeeper, Kubewarden. Our Kyverno run built successfully in 457 seconds and passed all 284 reported tests in 725 seconds, making commit fe09190 a credible source setup for a Kubernetes policy trial.

Setup3/5Clean source run, but production needs cluster permissions and webhooks
Docs5/5Explicit non-goals, controller roles, and webhook recovery tradeoffs
Community5/58,235 stars, an October 10 push, and active controller PRs
Maturity4/5284 reported tests passed, with version-specific controller work open

Discussed on

  1. hnShow HN: Kyverno – Kubernetes Native Policy Management3 points
  2. hnSecuring Kubernetes Clusters Using Kyverno Policy Engine – Kubernetes Goat3 points
  3. hnKyverno Policies to Secure Your Kubernetes Cluster3 points
  4. hnKubernetes Policy Comparison: OPA/Gatekeeper vs. Kyverno3 points
  5. hnCNCF Accepts Kyverno as the Latest Sandbox Project3 points

Who it’s for

Kubernetes platform teams enforcing recurring workload rules across deployment tools.
Operators who need resource mutation or generation alongside validation.
Teams that can own webhook availability, namespace exclusions, and policy exceptions.
Contributors able to budget for our 457-second source build and 725-second test run.

Who it’s NOT for

Teams seeking a replacement for Kubernetes RBAC: the README says Kyverno complements access control.
Operators expecting it to repair Kubernetes or infrastructure flaws: the README explicitly excludes that job.
Clusters without an owner for admission-service recovery: the installation guide says an unreachable fail-closed webhook rejects matching resource requests.
Teams wanting rules they never have to maintain: the README says it only enforces explicitly defined policies and needs active maintenance.
Buyers expecting the core engine to include a reporting UI or service-mesh authorization: the README assigns those to separate companion projects.

Setup reality

Our run of commit fe09190 on October 8, 2026 installed 1,136 packages in 97 seconds, built successfully in 457 seconds, and passed tests in 725 seconds. The go test summary recorded 284 passes and 0 failures out of 284. The unprivileged golang:1.24-bookworm container had 3 CPUs, 8 GB RAM, and no secrets.

Production needs a Kubernetes cluster, permission to create controller service accounts and cluster resources, and the recommended Helm configuration in a dedicated namespace. Webhook registration and API authentication use cluster secrets. Image verification also needs the appropriate registry access and trust configuration.

Match Kyverno to a supported Kubernetes release and plan webhook availability and namespace exclusions. The installation guide warns that unreachable fail-closed webhooks reject matching requests. Our source results do not measure admission latency or outage recovery.

Kyverno can reject a workload or change what gets created

A Kubernetes workload can satisfy access controls and still violate your team's rules. Kyverno handles that second decision: it can reject a resource, change it, generate related resources, or clean resources up. The project README gives concrete uses such as requiring security contexts, adding labels, and generating NetworkPolicies. It's useful when the same rule needs to follow a workload across deployment tools, instead of depending on someone remembering a convention in each repository.

Our checkout held 9,736 files and about 385,963 lines of source in 43.5 MB. That's a substantial policy engine to contribute to, even before dependencies arrive. For a cluster operator, the important question is which of its functions you actually need. Validation alone is a narrower requirement than validation plus resource generation, image-signature verification, and continuing scans. Don't adopt every available controller merely because a complete installation example includes it.

What happened when we ran it

Our run installed Kyverno commit fe09190 in 97 seconds with 1,136 packages, built it in 457 seconds, and completed tests in 725 seconds. The go test summary recorded 284 passes and 0 failures out of 284. We ran the checkout on October 8, 2026. Installation, build, and the reported suite all succeeded, so this revision gave us a clean source-development result on the path our lab exercised.

The sandbox was a fresh, unprivileged Debian container using golang:1.24-bookworm, with 3 CPUs and 8 GB of RAM and no secrets. Those conditions make the result useful for comparing contributor setup. They don't establish admission latency, cluster recovery behavior, or the correctness of a policy you write tomorrow. No cluster-workload measurement is included in the supplied results. Keep those questions separate when deciding whether the clean suite is enough to proceed with a deployment trial.

Production setup includes webhooks and controller permissions

Kyverno's installation guide recommends Helm for production and requires a dedicated namespace. The admission controller receives callbacks from the API server, while other controllers handle background changes, reports, and cleanup. Installation also creates service accounts and their permissions, custom resource definitions, and secrets for webhook registration and API authentication. You'll need authority to install those cluster resources and a deployment configuration that matches the functions your policies use.

The 1,136 packages in our source install describe developer dependencies, not the number of running services or the size of a deployed image. Our build therefore doesn't price a production cluster for you. Check the supported Kubernetes release against the selected Kyverno release, choose controller availability, and confirm that the API server can reach the webhook service. Image verification may also require access to your chosen registry and its trust configuration. Treat those as deployment decisions beyond compiling the Go repository.

An unreachable fail-closed webhook can reject matching requests

The installation guide explains that resource webhooks default to configurable fail-closed behavior. If the API server cannot reach Kyverno for a resource matching a policy, that request fails. A rule that requires Pods to run as non-root can therefore affect Pod creation when the policy service is unavailable. This is the operating burden I'd examine first. Someone must own availability and recovery for a component that can interrupt ordinary deployment work.

A 725-second successful suite in our container doesn't answer whether your own namespace exclusions allow Kyverno to recover after an outage. The guide says its Helm defaults exclude Kyverno's namespace and describes the recovery risks when that protection is removed. Excluded namespaces also sit outside those webhook checks. Keep their access controlled through RBAC, document the exceptions, and rehearse recovery before broad enforcement. An exclusion is an explicit boundary of coverage, even when it helps the cluster restart.

RBAC and authored policies still define the protection

The README states that Kyverno complements Kubernetes RBAC and enforces only policies users define. It also explicitly excludes repairing flaws in Kubernetes itself or the underlying infrastructure. Those limits should shape the purchase decision: a policy engine can enforce a resource rule, but it can't supply an access-control design or infer every requirement you forgot to encode. I'd start with a specific recurring mistake, such as missing resource limits, and decide how the rule handles legitimate exceptions.

Our 284 passing tests give evidence about the repository's measured suite, not blanket approval for a copied policy library. Read each candidate against your actual resource shapes and responsibilities. The README also points to separate projects for reporting UI and service-mesh authorization, so core-engine adoption doesn't provide every surrounding interface. Budget for maintaining the rules as applications change. A policy that blocks a legitimate rollout still needs an owner who can explain and correct its behavior.

October activity shows maintenance, with a report-controller issue open

Our scan found 44 CI workflow files, a tests directory, and no Dockerfile. The last GitHub push was October 10, 2026, with 8,235 stars and 830 open issues and PRs. Release v1.19.1 shipped September 10. Issue 17035 reports an aggregate report-controller goroutine surviving controller shutdown on a development revision. A related fix remained in an open PR. That supports checking the reporting controller on your chosen version, rather than asserting that every stable installation has the defect. The push and current PR activity show ongoing work.

Gatekeeper and Kubewarden offer different policy approaches

Gatekeeper deserves a comparison if you already use its OPA-based constraint templates and want to retain that policy investment. Kubewarden evaluates policies compiled to WebAssembly and has separate runtime and audit components. I'd choose Kyverno when its resource mutation or generation directly solves the job and the platform team will operate the webhooks. Our 457-second source build is acceptable contributor overhead. The harder adoption requirement is naming who restores admission service when an unreachable webhook starts rejecting deployments.

Alternatives

ProjectWhat it isPick it when
GatekeeperA Kubernetes policy controller using OPA-based constraint templates.pick this instead when your team already maintains Gatekeeper constraint templates and wants to keep that policy investment.
KubewardenKubernetes admission control with WebAssembly policies and an audit scanner.pick this instead when WebAssembly policy packaging is the approach your team wants to maintain.

What people are saying

  1. [github-trending] kyverno/kyverno

Sources

  1. Kyverno README and non-goals
  2. Kyverno homepage
  3. Kyverno production installation and webhook recovery
  4. Kyverno v1.19.1 release
  5. Aggregate report controller lifecycle issue 17035
  6. Open report controller fix PR 17524
  7. Gatekeeper constraint templates and policy controller
  8. Kubewarden admission controller monorepo

More dev tools reviews

compose-samples · librepods · sqlmap · coucou · world-execute-me-dsh-pv · mcp-extensions · the whole board →