✦ For everyone, free.

Practical knowledge for real and everyday life

Home

Kubernetes Validating Webhook Management

Kubernetes Validating Webhook Management ensures secure and compliant resource creation by enforcing policy rules through webhook validation in cluster operations.

Kubernetes Validating Webhook Management is the operational discipline of registering and maintaining ValidatingWebhookConfiguration objects and the external services they invoke, covering the infrastructure that must be correctly configured for validating policy logic to actually reach and evaluate every intended request — TLS trust, rule scoping, timeout tuning, and registration lifecycle, distinct from the validation logic itself.


Registering a Validating Webhook

Configuration Structure

A ValidatingWebhookConfiguration webhook entry specifies the resources and operations it matches, how the API server reaches the webhook service, and the failure behavior if that service is unreachable, mirroring the structure of a mutating webhook configuration but without any patch-related fields, since validating webhooks only ever allow or deny.

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  name: image-provenance-check
webhooks:
- name: provenance.supplychain.example.com
  clientConfig:
    service:
      name: provenance-checker
      namespace: supply-chain
      path: /validate
      port: 443
    caBundle: <base64-encoded-CA-certificate>
  rules:
  - apiGroups: [""]
    apiVersions: ["v1"]
    operations: ["CREATE"]
    resources: ["pods"]
  admissionReviewVersions: ["v1"]
  sideEffects: None
  timeoutSeconds: 5
  failurePolicy: Fail

matchPolicy and Object Selectors

matchPolicy: Equivalent (the default) ensures the webhook is invoked regardless of which API version a client used to submit a request, as long as it is convertible to a version the webhook's rules list; combined with objectSelector and namespaceSelector, these fields let a webhook's registration precisely target only the objects it is meant to evaluate.

objectSelector:
  matchLabels:
    tier: production

TLS Trust and Certificate Lifecycle

Establishing and Maintaining caBundle Trust

As with mutating webhooks, the API server validates the webhook service's TLS certificate against the caBundle specified in the configuration; certificate rotation for the webhook service must be paired with an update to this field across every referencing configuration, typically automated through certificate-management tooling rather than performed manually.

Consequences of Trust Failures

If the caBundle is stale or the webhook's certificate has expired, every matching request begins failing the webhook call itself (not the validation logic), and the resulting behavior — block or allow — is determined entirely by failurePolicy, making TLS trust maintenance as operationally important as the correctness of the validation code running behind it.


Failure Policy as a Governance Decision

Fail Versus Ignore for Security-Critical Policy

For validating webhooks enforcing genuine security requirements — rejecting privileged pods, requiring image provenance — failurePolicy: Fail ensures the policy cannot be silently bypassed by an outage of the webhook service, at the cost of that outage blocking all matching deployments; failurePolicy: Ignore is more appropriate for advisory or non-critical checks where availability should be prioritized over strict enforcement.

failurePolicy: Fail

Designing for High Availability of the Webhook Service Itself

Because failurePolicy: Fail ties cluster-wide deployment availability to the webhook service's own uptime, running that service with multiple replicas, health checks, and its own monitoring is a prerequisite for adopting strict enforcement without introducing a new single point of failure into the cluster's request path.


Timeout Tuning

Balancing Strictness Against Latency

timeoutSeconds bounds how long the API server waits for the webhook's response before treating the call as failed (subject to failurePolicy); setting this too low risks spurious failures under transient load on the webhook service, while setting it too high extends the latency of every matching API request during a genuine slowdown.

timeoutSeconds: 5

Auditing and Ongoing Maintenance

Enumerating Active Validators

kubectl get validatingwebhookconfigurations -o yaml provides the complete list of registered validation policy, including scope, failure behavior, and timeout — a necessary reference point when investigating why a request was rejected or, conversely, why a policy violation was unexpectedly allowed through.

kubectl get validatingwebhookconfigurations -o custom-columns=\
NAME:.metadata.name,FAILURE_POLICY:.webhooks[0].failurePolicy

Reviewing Rule Coverage Periodically

As new resource types and API versions are introduced to a cluster (through upgrades or newly installed CRDs), periodically reviewing whether existing validating webhook rules still cover the intended scope prevents policy gaps from emerging silently as the cluster's API surface evolves over time.