Introduction
Gérer les certificats TLS dans un cluster Kubernetes peut devenir rapidement complexe. cert‑manager est un opérateur Kubernetes open‑source qui automatise l’émission, le renouvellement et la rotation des certificats TLS en intégrant des sources comme Let’s Encrypt, HashiCorp Vault, ou des autorités internes.
Prérequis
- Un cluster Kubernetes (>=1.21)
kubectl
configuré- Helm 3 (optionnel)
- Un Issuer ou ClusterIssuer disponible (Let’s Encrypt, Vault, CA interne)
Installation de cert-manager
1. Ajouter le repository Helm
helm repo add jetstack https://charts.jetstack.io
helm repo update
2. Installer cert-manager
kubectl create namespace cert-manager
helm install cert-manager jetstack/cert-manager --namespace cert-manager --version v1.13.0 --set installCRDs=true
Création d’un ClusterIssuer Let's Encrypt
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: admin@example.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx
Appliquez-le :
kubectl apply -f clusterissuer.yaml
Émission automatique d’un certificat
Définir une ressource Certificate
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: tls-example-com
namespace: production
spec:
secretName: tls-example-com
dnsNames:
- example.com
- www.example.com
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
kubectl apply -f certificate.yaml
Le secret tls-example-com
contient le certificat et la clé privée.
Intégration avec Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-web
namespace: production
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- example.com
secretName: tls-example-com
rules:
- host: example.com
http:
paths:
- path: /
backend:
service:
name: example-svc
port:
number: 80
Supervision et alerting
- Metrics : activez
--metrics
sur le controller - Scraping : collectez
certmanager_certificate_expiration_timestamp_seconds
avec Prometheus - Alertes : prévoyez une alerte si expiration < 7 jours
Bonnes pratiques
- Isoler cert‑manager dans son namespace
- Sécuriser l’accès aux secrets (RBAC)
- Tester la création et le renouvellement en staging
- Documenter la récupération manuelle
- Mettre à jour régulièrement CRDs et chart Helm
Conclusion
cert‑manager simplifie la gestion des certificats TLS dans Kubernetes et réduit les risques liés aux expirations. En automatisant le cycle de vie des certificats, vous garantissez la sécurité et la disponibilité de vos services exposés.