Automatiser la gestion des certificats TLS dans Kubernetes avec cert-manager

Publié le 19 juillet 2025

Kubernetes
Sécurité

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

  1. Isoler cert‑manager dans son namespace
  2. Sécuriser l’accès aux secrets (RBAC)
  3. Tester la création et le renouvellement en staging
  4. Documenter la récupération manuelle
  5. 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.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets.

Contactez-nous

Articles similaires qui pourraient vous intéresser