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, senza dover imparare un nuovo linguaggio da zero.
Il rilascio
Kyverno è pubblicato da Nirmata (Sanjay Ramanathan, Jim Bugwadia) nel maggio 2019. Licenza Apache 2.0. Scritto in Go.
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. Policy YAML K8s-native. Validation, Mutation, Generation. Cosign integration.
