4.6 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)
- Exemples :
-
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
- Exemples :
Structure
Chart.yaml: Définition du chart Helmtemplates/: Dossiers organisés par applicationhomarr/: 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-credentialsavec 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)
- Webhook OVH installé : Le webhook
cert-manager-webhook-ovhdoit être installé - Secret OVH credentials : Le secret
ovh-credentialsdoit exister dans le namespacecertificates-ops- Voir
templates/secret-ovh-credentials.yamlpour le template - Créez le secret avec vos vraies credentials OVH API
- Voir
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)