Skip to content
Calcrivo

Admission Controller Coverage Calculator

Score admission control coverage from namespaces under policy, enforce versus audit mode, exemptions, webhook failure policy and latency budget.

Inputs

namespaces
namespaces
policies
policies
namespaces
requests
requests
ms
seconds

Admission Coverage Score

40.4/ 100

Grade

D — Weak

Namespace Coverage

71.9%

Policies Actually Enforcing

55.3%

Exempted Namespace Share

18.8%

Namespaces With No Policy

18namespaces

Admission Denial Rate

0.522%

Timeout Budget Used at p95

0.38%

Verdict

failurePolicy: Ignore means every policy is optional whenever the webhook is unhealthy — move to Fail with a tested exemption list

Step by step

  1. Values used

    Namespaces in the cluster = 64 namespaces; Namespaces covered by a policy = 46 namespaces; Policies defined = 38 policies; Policies in enforce or deny mode = 21 policies; Namespaces exempted from policy = 12 namespaces; Admission requests per day = 180,000 requests; Requests denied per day = 940 requests; Webhook p95 latency = 38 ms; Webhook timeout = 10 seconds; Webhook failure policy = Ignore — open, requests admitted if the webhook is down — 20

  2. Admission Controller Coverage

    Coverage = namespace coverage × 0.45 + enforcing-policy share × 0.35 + exemption score × 0.20 − failure-policy penalty, where exemption score = max(0, 100 − 3 × exempted namespace percentage).

  3. Latency headroom

    Timeout budget used = webhook p95 latency ÷ (timeout × 1000) × 100. Past roughly 50%, normal load variance starts producing admission timeouts.

  4. Admission Coverage Score

    = 40.4 / 100

  5. Grade

    = D — Weak

  6. Namespace Coverage

    = 71.9

  7. Policies Actually Enforcing

    = 55.3

  8. Exempted Namespace Share

    = 18.8

  9. Namespaces With No Policy

    = 18 namespaces

How it works

Three things decide whether admission control is real: how much of the cluster it sees, whether it denies or merely warns, and what happens when the webhook is down. failurePolicy: Ignore is scored as a flat 20-point penalty because it converts every policy into a suggestion during exactly the window an attacker would exploit — and a busy cluster has that window regularly. Admission control is the only Kubernetes control that prevents rather than reports, and most installations run in audit mode with failurePolicy: Ignore, which is a dashboard rather than a guardrail.

Formulas

Admission Controller Coverage

Coverage = namespace coverage × 0.45 + enforcing-policy share × 0.35 + exemption score × 0.20 − failure-policy penalty, where exemption score = max(0, 100 − 3 × exempted namespace percentage).

namespaceCoverage
Namespaces under at least one policy ÷ all namespaces × 100
enforceRatio
Policies in enforce mode ÷ all policies × 100
failurePolicy
20-point penalty while the webhook fails open

Latency headroom

Timeout budget used = webhook p95 latency ÷ (timeout × 1000) × 100. Past roughly 50%, normal load variance starts producing admission timeouts.

p95LatencyMs
95th percentile webhook response time
webhookTimeoutSeconds
Configured webhook timeout, maximum 30 seconds

Frequently Asked Questions

How is Admission Controller Coverage calculated?

Coverage = namespace coverage × 0.45 + enforcing-policy share × 0.35 + exemption score × 0.20 − failure-policy penalty, where exemption score = max(0, 100 − 3 × exempted namespace percentage). Three things decide whether admission control is real: how much of the cluster it sees, whether it denies or merely warns, and what happens when the webhook is down. failurePolicy: Ignore is scored as a flat 20-point penalty because it converts every policy into a suggestion during exactly the window an attacker would exploit — and a busy cluster has that window regularly.

Why does Admission Controller Coverage matter?

Admission control is the only Kubernetes control that prevents rather than reports, and most installations run in audit mode with failurePolicy: Ignore, which is a dashboard rather than a guardrail.

What values do I need to enter?

This calculator takes 10 inputs: Namespaces in the cluster, Namespaces covered by a policy, Policies defined, Policies in enforce or deny mode, Namespaces exempted from policy, Admission requests per day, Requests denied per day, Webhook p95 latency, Webhook timeout, Webhook failure policy. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.

Is failurePolicy: Fail safe to use?

Yes, with preparation. Exempt kube-system and your policy controller's own namespace, run at least two webhook replicas across nodes, keep the timeout modest, and load-test admission latency. Done that way, Fail is safe and Ignore is the risk — because a crash-looping webhook silently disables every policy you have.

Should policies start in audit mode?

Yes, briefly. Audit tells you what would break without breaking it, which is essential for a policy applied to running workloads. The failure is leaving them there: set a date when each policy is promoted to enforce, and track the enforce ratio so the intention does not quietly expire.

You might also need