TLS manuale è rotto
In Kubernetes, gestire certificati TLS manualmente è impraticabile: decine di Ingress, hostname diversi, scadenze, rinnovi, multi-tenant. Gli operatori vogliono un flusso dichiarativo: aggiungi un’annotazione o CRD, il cluster ottiene e rinnova il certificato.
Il rilascio
cert-manager viene pubblicato da Jetstack (UK) nel marzo 2017. Lead: James Munnelly. Scritto in Go, licenza Apache 2.0.
Come funziona
Tre CRD fondamentali:
- Issuer / ClusterIssuer — definisce un’autorità (Let’s Encrypt, Vault, CA privata, Venafi TPP/TLSPDC)
- Certificate — richiesta di certificato per uno o più DNS SAN
- CertificateRequest / Order / Challenge — flusso interno ACME
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata: { name: letsencrypt-prod }
spec:
acme:
email: ops@example.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef: { name: le-prod-key }
solvers:
- http01: { ingress: { class: nginx } }
Sui Ingress basta l’annotazione cert-manager.io/cluster-issuer: letsencrypt-prod e cert-manager emette/rinnova certificati automaticamente in Secret TLS.
Feature
- ACME HTTP-01 e DNS-01 — DNS-01 richiesto per wildcard
- Provider DNS 50+ (Route53, Cloudflare, Azure DNS, GCP, OVH, DigitalOcean, etc.)
- Vault issuer — PKI HashiCorp Vault
- Venafi — enterprise CA
- Self-signed / CA — CA interne
- Renewal automatic — entro window configurabile
- mTLS — per Istio, Linkerd integration
Integrazione ecosystem
- Ingress NGINX, Traefik, Contour, HAProxy Ingress
- Istio (gateway), Linkerd (mTLS)
- External DNS — combinazione per auto-DNS + TLS
Alternative
- Traefik ACME — built-in in Traefik, meno features
- Caddy — auto-HTTPS, ma fuori da K8s native
- kube-lego — predecessore, deprecato
- EKS ACM, GKE Managed Certs — cloud-specific
Nel contesto italiano
cert-manager sta diventando la scelta di riferimento per TLS Kubernetes nelle aziende italiane che stanno mettendo in produzione K8s: SaaS B2B multi-tenant con wildcard Let’s Encrypt DNS-01, banche con CA interne via Vault issuer, PA digitale con certificati emessi da AgID-CAs, MSP e hosting provider con Kubernetes-as-a-Service.
Riferimenti: cert-manager (Jetstack, marzo 2017). James Munnelly. Licenza Apache 2.0. ACME, Vault, Venafi, CA private issuer. Wildcard DNS-01 support.
