Webhook / Control-Plane Calls Blocked¶
Hypothesis triage for control-plane-blocked webhooks:
flowchart TD
S["Admission requests hang or fail"] --> H1{"Webhook Service has no ready endpoints?"}
H1 -- yes --> R1["Restore webhook pod readiness and endpoints"]
H1 -- no --> H2{"TLS certificate or CA bundle invalid?"}
H2 -- yes --> R2["Renew cert and fix the CA bundle"]
H2 -- no --> H3{"NetworkPolicy blocks API-server-to-webhook traffic?"}
H3 -- yes --> R3["Allow the control-plane path in NetworkPolicy"]
H3 -- no --> H4{"UDR, firewall, or proxy blocks control-plane calls?"}
H4 -- yes --> R4["Open the control-plane-originated path"]
H4 -- no --> H5{"Timeout or failurePolicy makes writes hang?"}
H5 -- yes --> R5["Tune timeout and failurePolicy"]
H5 -- no --> EV["Diagnose: webhook config, service and endpoints, network policies, cluster model"]
EV --> RES["Resolution per matched cause"]
RES --> PREV["Prevention: webhook readiness and policy checks in CI"] Symptom¶
Admission requests hang or fail, deployments time out on create or update, or validating and mutating webhooks appear healthy from inside the cluster but fail when the control plane calls them.
Possible Causes¶
- Webhook Service has no ready endpoints.
- Webhook TLS certificate or CA bundle is invalid, expired, or mismatched.
- NetworkPolicy blocks API-server-to-webhook traffic.
- Private cluster or API Server VNet Integration behavior is misunderstood.
- UDR, firewall, or proxy controls block control-plane-originated calls to in-cluster webhooks.
- Webhook timeout or
failurePolicymakes API writes hang or fail broadly.
Diagnosis Steps¶
-
Inspect the webhook configuration and timeout behavior.
-
Verify the backing Service and endpoint health.
-
Check whether NetworkPolicy might block the path.
-
Confirm the cluster control-plane networking model before making assumptions about the source path.
az aks show \ --resource-group "$RG" \ --name "$CLUSTER_NAME" \ --query "{enablePrivateCluster:apiServerAccessProfile.enablePrivateCluster,apiServerAccessProfile:apiServerAccessProfile,networkProfile:networkProfile}" \ --output yamlCommand Purpose az aks showShow the private cluster and API server access profile. --resource-groupResource group that contains the AKS cluster. --nameName of the AKS cluster. --querySelects private cluster flag, access profile, and network profile. --outputOutput format for the result. -
If the cluster uses UDR, firewall inspection, or a network-isolated path, inspect those controls for control-plane-to-webhook calls in addition to regular pod egress.
Resolution¶
- Restore webhook readiness and ensure the Service has healthy endpoints.
- Fix certificate or CA bundle mismatches and rotate expired webhook TLS material.
- Add NetworkPolicy exceptions required for API-server-to-webhook traffic.
- Correct firewall or UDR assumptions when the control plane path is being blocked.
- Adjust
failurePolicyonly with platform approval and with clear blast-radius documentation. - Keep webhook timeouts short enough to avoid broad control-plane stalls.
Prevention¶
- Treat admission webhooks as part of the control-plane dependency chain, not just another app deployment.
- Test webhook reachability after private-cluster, VNet-integration, firewall, or UDR changes.
- Track certificate expiry and CA bundle rotation in routine operations.
- Document which webhook failures are fail-open versus fail-closed and why.