Files
argocd/helm/certificates/ops/docs/README.md
2026-01-22 00:06:44 +01:00

4.7 KiB

Gestion des Certificats Let's Encrypt pour le cluster OPS

Ce chart gère les certificats TLS générés par cert-manager dans le cluster OPS via Let's Encrypt.

Stratégie de certificats

  • Sites publics (accessibles depuis Internet) → Certificats individuels avec letsencrypt-prod (HTTP-01)

    • Exemples : homarr.dev.gkdomaine.fr, longhorn.dev.gkdomaine.fr
    • Validation via HTTP-01 challenge (nécessite accès HTTP public)
  • Sites internes (accessibles uniquement en interne) → Certificats wildcard avec letsencrypt-dns01-prod (DNS-01)

    • Exemples : *.dev.gkdomaine.fr, *.rct.gkdomaine.fr, *.prd.gkdomaine.fr
    • Validation via DNS-01 challenge (nécessite le webhook OVH)
    • Un seul certificat wildcard couvre tous les sous-domaines d'un environnement

Structure

  • Chart.yaml : Définition du chart Helm
  • templates/ : Dossiers organisés par application
    • homarr/ : Certificats pour l'application Homarr (sites publics)
    • longhorn/ : Certificats pour Longhorn (sites publics)
    • headlamp/ : Certificats pour Headlamp (sites internes)
    • wildcard/ : Certificats wildcard pour les environnements (dev, rct, prd)

ClusterIssuers

letsencrypt-prod (HTTP-01)

  • Utilisé pour les certificats individuels des sites publics
  • Challenge HTTP-01 via Traefik
  • Pas besoin de configuration DNS supplémentaire

letsencrypt-dns01-prod (DNS-01)

  • Utilisé pour les certificats wildcard des sites internes
  • Challenge DNS-01 via webhook OVH
  • Nécessite le secret ovh-credentials avec les credentials OVH API

Ajout d'un nouveau certificat

Pour un site public (certificat individuel)

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: <app>-<env>-tls
  namespace: certificates-ops
spec:
  secretName: <app>-<env>-tls
  issuerRef:
    name: letsencrypt-prod  # HTTP-01 pour sites publics
    kind: ClusterIssuer
  dnsNames:
    - <app>.<env>.gkdomaine.fr

Pour un site interne (utiliser le wildcard)

Option 1 : Utiliser le certificat wildcard existant (recommandé)

Pas besoin de créer un Certificate ! Utilisez directement le secret wildcard dans votre Ingress :

# Dans votre values.yaml ou Ingress
ingress:
  tls:
    - secretName: wildcard-dev-tls  # Utilise le wildcard
      hosts:
        - headlamp.dev.gkdomaine.fr

Option 2 : Créer un certificat individuel avec DNS-01

Si vous avez besoin d'un certificat spécifique (par exemple pour un domaine différent) :

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: <app>-<env>-tls
  namespace: certificates-ops
spec:
  secretName: <app>-<env>-tls
  issuerRef:
    name: letsencrypt-dns01-prod  # DNS-01 pour sites internes
    kind: ClusterIssuer
  dnsNames:
    - <app>.<env>.gkdomaine.fr

Déploiement

Les certificats sont déployés automatiquement via l'ApplicationSet certificates-apps dans ArgoCD.

Prérequis

Pour les certificats wildcard (DNS-01)

  1. Webhook OVH installé : Le webhook cert-manager-webhook-ovh doit être installé
  2. Secret OVH credentials : Le secret ovh-credentials doit exister dans le namespace cert-manager-ops
    • Le secret est déployé automatiquement via le chart cert-manager-webhook-ovh
    • Voir helm/cert-manager-webhook-ovh/ops/templates/secret-ovh-credentials.yaml pour le template
    • Créez le secret avec vos vraies credentials OVH API

Pour les certificats individuels (HTTP-01)

  • Aucun prérequis supplémentaire
  • Le cluster OPS doit avoir accès Internet
  • Les domaines doivent être accessibles publiquement via HTTP

Vérification

# Vérifier les certificats
kubectl get certificates -n certificates-ops --context=cluster-ops

# Vérifier un certificat spécifique
kubectl describe certificate wildcard-dev-tls -n certificates-ops --context=cluster-ops

# Vérifier les secrets TLS créés
kubectl get secrets -n certificates-ops --context=cluster-ops | grep tls

# Vérifier les ClusterIssuers
kubectl get clusterissuers --context=cluster-ops

Synchronisation vers les autres clusters

Les secrets TLS générés dans OPS doivent être synchronisés vers les clusters DEV/RCT/PRD où les applications sont déployées.

Utilisez le script scripts/sync-all-certificates.sh pour synchroniser automatiquement tous les secrets TLS.

Notes importantes

  • Les certificats sont créés dans le cluster OPS où cert-manager est installé
  • Le namespace du Certificate doit être certificates-ops
  • Pour utiliser le certificat dans d'autres clusters (DEV, RCT, PRD), le secret TLS doit être synchronisé depuis OPS
  • Les certificats wildcard couvrent tous les sous-domaines d'un environnement (ex: *.dev.gkdomaine.fr)
  • Les certificats individuels sont spécifiques à un domaine (ex: homarr.dev.gkdomaine.fr)