Kyverno Cheatsheet

Kyverno CheatsheetKapitel 09 von 11

Kyverno Webhook-Betrieb

Stand Kyverno 1.19 · Edition 2026.10 · Release-Daten geprüft am 1. Oktober 2026

failurePolicy: bewusst entscheiden

Default Fail (fail-closed): ist Kyverno down, lehnt der API-Server alle gematchten Requests ab. Sicher, aber ein Verfügbarkeits-Risiko, HA-Replicas und PDB einplanen.

Fail-open global per --forceFailurePolicyIgnore, besser pro Policy abwägen: Security-Gates Fail, Komfort-Mutationen Ignore.

Neustart-Deadlock: --excludeBootstrapResources (seit 1.19, Default aus) nimmt Node und CSR aus den Fail-Webhooks, damit ein Cluster ohne laufende Kyverno-Pods wieder hochkommt. Policies auf diese Kinds greifen dann nicht.

Performance-Tuning

Webhook-Timeout: Default 10s (1–30s), knapp halten, hängende Admission bremst jedes Deployment.

Namespace-Filter: webhooks.namespaceSelector in der Kyverno-ConfigMap; kube-system und kyverno sind default ausgenommen. resourceFilters [Kind,Namespace,Name]: letzte Verteidigungslinie hinter dem Webhook. Background-Reports ignorieren sie per Default (--skipResourceFilters=true), CEL-generate und -mutateExisting beachten sie seit 1.19.

Match-Blöcke eng schneiden: was nicht matcht, erzeugt keinen Admission-Call.

Egress aus Policies: CEL http.Get/Post und apiCall.service laufen gegen --httpBlocklist (Default: Cloud-Metadaten 169.254.169.254, metadata.google.internal, Loopback; ein eigener Wert ersetzt die Defaults, also mitführen) und optional --httpAllowlist (URL-Präfixe). In Namespaced-Policies ist HTTP per Default aus (--allowHTTPInNamespacedPolicies=false). Für Legacy-apiCall und GlobalContextEntry gilt die Blocklist erst ab 1.19.1.