Policy senza imparare Rego
OPA/Gatekeeper richiede padronanza di Rego, un linguaggio dichiarativo Datalog-ispirato con curva di apprendimento significativa. Molti team Kubernetes vogliono policy as YAML, con semantica K8s nativa che imparare da zero.
Il rilascio
Kyverno è pubblicato da Nirmata (Sanjay Ramanathan, Jim Bugwadia) nel maggio 2019. Licenza Apache 2.0. Scritto in Go. Donato alla CNCF il 10 novembre 2020 (sandbox), incubating il 13 luglio 2022, graduated il 16 marzo 2026.
Filosofia
- Policy come CRD YAML
- Semantica K8s —
match,resources,kind - Familiare a chi conosce RBAC, NetworkPolicy, etc.
- Validating, Mutating, Generating admission controller + policy reporter
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata: { name: require-labels }
spec:
validationFailureAction: Enforce
rules:
- name: check-team-label
match:
resources:
kinds: [Pod, Deployment]
validate:
message: "label 'team' is required"
pattern:
metadata:
labels:
team: "?*"
Caratteristiche
- Validation — blocca o warn su risorse non conformi
- Mutation — aggiunge/modifica campi automaticamente (es. sidecar injection, default resource limits)
- Generation — crea risorse derivate (NetworkPolicy per ogni Namespace)
- Image verification — integrazione Cosign/Sigstore per verifica firma container
- Cleanup policies — cancellazione risorse scadute
- Policy Reports — inventory conformità per cluster
- Policy exceptions — eccezioni esplicite per risorse legacy
- ValidatingAdmissionPolicy integrazione (K8s 1.30+ CEL native)
Kyverno vs OPA Gatekeeper
| Kyverno | OPA Gatekeeper | |
|---|---|---|
| Linguaggio | YAML K8s-native | Rego |
| Curva apprendimento | Bassa | Alta |
| Generation/Mutation | Sì | No (solo validate) |
| Use case non-K8s | No | Sì (Terraform, API, ecc.) |
| Performance | Ottima | Ottima |
Policy pack curati
- Kyverno Policies — repo ufficiale con 100+ policy pronte (PodSecurity, best practice, compliance)
- PSP replacement — policy che replicano Pod Security Policy (deprecate K8s 1.25+)
- PCI DSS, CIS, NSA/CISA — baseline conformità
Nel contesto italiano
Kyverno è molto adottato in:
- Banche per policy baseline conformità (risorse, immagini, secret)
- PA digitale — vincoli su namespace, label obbligatorie
- MSP — policy di default su cluster clienti
- Sanità — conformità regolamenti dati sensibili
- Team platform engineering come alternativa a Gatekeeper
Combinato spesso con Cosign/Sigstore per verifica firma immagini container in ambienti regolamentati.
Riferimenti: Kyverno (maggio 2019). Nirmata (Sanjay Ramanathan, Jim Bugwadia). Licenza Apache 2.0. Scritto in Go. CNCF sandbox (10 novembre 2020), incubating (13 luglio 2022), graduated (16 marzo 2026). Policy YAML K8s-native. Validation, Mutation, Generation. Cosign integration.
