Kubernetes
Sécurité

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

19 juillet 2025

3 min de lecture

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.

Si vous êtes nouveau sur Kubernetes, consultez d'abord notre guide d'introduction aux concepts fondamentaux de Kubernetes.

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.15.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: /
            pathType: Prefix
            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

Intégration avec l'Ingress

Pour une gestion complète du routage avec TLS, découvrez comment configurer Traefik v2 pour le routage HTTP/HTTPS.

Alternatives

Si vous préférez une approche sans Kubernetes, vous pouvez explorer la gestion manuelle des certificats avec Certbot et cron sur des serveurs Linux standards.

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 d'infrastructure et d'infogérance.

Contactez-nous

Articles similaires