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)
- kubectlconfiguré
- 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 --metricssur le controller
- Scraping : collectez certmanager_certificate_expiration_timestamp_secondsavec 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.


