Admission Controllers: KCA practice questions
Kyverno runs as a dynamic admission controller, so this topic is about where policy decisions sit in the Kubernetes API request flow. An admission controller intercepts requests to the API server after the request is authenticated and authorized and before the object is persisted.
By Ibrahim Yesilay · Published · Updated
Independent community practice, not affiliated with or endorsed by CNCF or The Linux Foundation.
What Admission Controllers covers in KCA
Kyverno runs as a dynamic admission controller, so this topic is about where policy decisions sit in the Kubernetes API request flow. An admission controller intercepts requests to the API server after the request is authenticated and authorized and before the object is persisted. Admission runs in two phases: mutating controllers first, which may change the object, and validating controllers second, which may not. If any controller in either phase rejects the request, the whole request is rejected and the user receives an error. Admission applies to requests that create, update or delete objects and to some custom verbs such as connecting to a pod through the API server proxy; it does not and cannot block reads, so get, list and watch bypass it.
Dynamic admission control adds external webhooks to those phases. Mutating admission webhooks are called first and can set custom defaults. After all modifications are complete and the API server has validated the object, validating admission webhooks are called and can reject it. Kubernetes advises that a webhook that must see the final state of an object should be a validating one, because objects can still change after a mutating webhook has seen them. Kyverno's guide adds that mutating webhooks are called one after another in lexical order of their configuration names, each seeing the previous changes, while validating webhooks are called in parallel.
Each webhook has a failurePolicy and a timeout. Ignore lets the request continue when calling the webhook fails; Fail, the default, rejects it. The timeout defaults to 10 seconds and must be between 1 and 30, and when it expires the failure policy decides. A namespaceSelector can limit which namespaced requests reach a webhook based on namespace labels.
Kyverno receives both mutating and validating webhook callbacks. Its webhook server handles the AdmissionReview requests and passes them to the policy engine, and its webhook controller watches installed policies and adjusts the webhook configurations so the API server only sends the resources those policies match. A background controller handles generate and mutate-existing rules through intermediate UpdateRequest resources, report controllers build policy reports, and a certificate renewer maintains the webhook's certificates, stored in Secrets. Image verification rules run after other mutation rules and before the validation webhook. Kyverno's default webhook namespaceSelector excludes the kube-system and kyverno namespaces.
The difference between a webhook and a policy is a useful mental model from the Kyverno guide: a webhook is an instruction for the API server, telling it what to send where and how long to wait, while a policy is an instruction for the controller that answers. Admission only ever sees new and changed objects, which is why Kyverno complements it with background scans of existing resources; those scans report violations but never block anything. Kubernetes also offers ValidatingAdmissionPolicy and MutatingAdmissionPolicy, which embed declarative validation or mutation inside the API server without an HTTP callout.
Key points
- Admission runs after authentication and authorization and before the object is persisted.
- Mutating admission runs before validating admission, and validating webhooks run in parallel.
- Admission webhooks cannot block get, list or watch requests.
- A webhook failurePolicy of Fail, the default, rejects requests when the webhook cannot be reached.
Three sample questions
8 KCA questions on Admission Controllers, 8 with explanations. How practice works
Question 1
- A.Mutating admission
- B.Persistence to etcd
- C.Object schema validation
- D.Validating admission
Correct answer: A
MutatingWebhookConfiguration webhooks run here and can return a JSON patch that rewrites the object before it moves on.Question 2
ValidatingWebhookConfiguration with failurePolicy: Ignore. The webhook's backing pods crash and become unreachable. What happens to a matching request submitted during the outage?- A.The request is retried against a different webhook automatically.
- B.The request is admitted, as if the webhook had returned an "allowed" response.
- C.The API server queues the request until the webhook recovers.
- D.The request is rejected, since the webhook could not be reached.
Correct answer: B
failurePolicy: Ignore is fail-open — if the webhook cannot be reached, times out, or errors, the API server treats the request as allowed rather than blocking cluster operations on a webhook outage.Question 3
ClusterPolicy that matches only Secret resources for the first time in this cluster. What should you expect to observe about Kyverno's ValidatingWebhookConfiguration immediately afterward?- A.A new rule entry for
secretsappears in Kyverno's managed webhook configuration. - B.The webhook configuration is unaffected; only
PolicyReportobjects reflect new policies. - C.Kyverno creates an entirely new
ValidatingWebhookConfigurationobject just for this policy. - D.Nothing changes — Kyverno's webhook already intercepts every resource kind by default.
Correct answer: A
rules to be the union of resource kinds referenced by currently installed policies. A policy newly matching Secret causes a secrets rule entry to be added to the existing webhook object.Practice this topic
Focus mode keeps every question on Admission Controllers until you leave it. 10 free guest answers, then a free account; no credit card.
Or open KCA practice across all topics.
Sources
The explanation above was checked against these official documents.
- Kubernetes docs: Admission Control in Kubernetes (checked 2026-10-23)
- Kubernetes docs: Dynamic Admission Control (checked 2026-10-23)
- Kyverno docs: Admission Controllers 101 (checked 2026-10-23)
- Kyverno docs: How Kyverno Works (checked 2026-10-23)
- Kyverno docs: Image Verification overview (checked 2026-10-23)
Frequently asked questions
Why should a check that needs the final object run in a validating webhook?
Mutating webhooks can be followed by other mutations, so the object they see may still change. Validating webhooks run after all mutation and after the API server has validated the object, so they see its final form.