6.8 KiB
Configuration DNS-01 avec OVH
Vue d'ensemble
Ce guide explique comment configurer cert-manager pour générer des certificats Let's Encrypt wildcard en utilisant le DNS-01 challenge avec OVH comme fournisseur DNS.
Prérequis
- Un compte OVH avec accès à la gestion DNS du domaine
gkdomaine.fr - Le domaine
dev.gkdomaine.frdoit être résolvable publiquement via DNS OVH
Étape 1 : Créer une Application API OVH
1.1 Accéder à l'API OVH
- Connectez-vous à votre compte OVH
- Allez sur https://eu.api.ovh.com/createApp/ (pour l'Europe)
- Connectez-vous avec votre compte OVH
1.2 Créer l'Application
-
Remplissez le formulaire :
- Application name :
cert-manager-gkdomaine(ou un nom de votre choix) - Application description :
Cert-manager pour certificats Let's Encrypt - Application validity :
Unlimited(ou la durée souhaitée) - Callback URL : Laissez vide
- Application name :
-
Cliquez sur Create application
-
Notez les identifiants :
- Application Key (AK) :
xxxxxxxxxxxxxxxx - Application Secret (AS) :
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Application Key (AK) :
⚠️ Important : Notez ces valeurs, vous ne pourrez plus les voir après !
Étape 2 : Générer les Permissions et Consumer Key
2.1 Générer les Permissions
Vous devez générer les permissions pour que l'application puisse modifier les enregistrements DNS.
Utilisez l'API OVH ou le script suivant :
# Remplacer par vos valeurs
APPLICATION_KEY="VOTRE_APPLICATION_KEY"
APPLICATION_SECRET="VOTRE_APPLICATION_SECRET"
# Générer les permissions pour DNS
curl -X POST "https://eu.api.ovh.com/v1/auth/credential" \
-H "X-Ovh-Application: $APPLICATION_KEY" \
-H "Content-Type: application/json" \
-d '{
"accessRules": [
{
"method": "GET",
"path": "/domain/zone/*"
},
{
"method": "POST",
"path": "/domain/zone/*"
},
{
"method": "PUT",
"path": "/domain/zone/*"
},
{
"method": "DELETE",
"path": "/domain/zone/*"
}
],
"redirection": "https://www.ovh.com"
}'
Cela retournera une URL de validation. Ouvrez cette URL dans votre navigateur et validez les permissions.
2.2 Récupérer le Consumer Key
Après validation, vous recevrez un Consumer Key (CK). Notez-le également.
Étape 3 : Créer le Secret Kubernetes
Créez un Secret Kubernetes contenant l'Application Secret :
kubectl create secret generic ovh-credentials \
--from-literal=application-secret=VOTRE_APPLICATION_SECRET \
-n certificates-ops \
--context=cluster-ops
Important : Remplacez VOTRE_APPLICATION_SECRET par la valeur réelle de votre Application Secret.
Étape 4 : Configurer le ClusterIssuer
4.1 Mettre à jour le ClusterIssuer
Éditez helm/certificates/ops/templates/cluster-issuer-letsencrypt-dns01.yaml et remplacez :
solvers:
- dns01:
ovh:
endpoint: ovh-eu # ovh-eu pour l'Europe
applicationKey: "VOTRE_APPLICATION_KEY" # Remplacez par votre Application Key
applicationSecretRef:
name: ovh-credentials
key: application-secret
consumerKey: "VOTRE_CONSUMER_KEY" # Remplacez par votre Consumer Key
Remplacez :
VOTRE_APPLICATION_KEYpar votre Application KeyVOTRE_CONSUMER_KEYpar votre Consumer Key
4.2 Endpoints OVH disponibles
ovh-eu: Pour l'Europe (recommandé pour la France)ovh-us: Pour les États-Unisovh-ca: Pour le Canada
Étape 5 : Vérifier la Configuration
5.1 Vérifier le Secret
kubectl get secret ovh-credentials -n certificates-ops --context=cluster-ops
# Vérifier le contenu (la valeur sera encodée en base64)
kubectl get secret ovh-credentials -n certificates-ops --context=cluster-ops -o yaml
5.2 Vérifier le ClusterIssuer
kubectl get clusterissuer letsencrypt-dns01-prod --context=cluster-ops
# Voir la configuration complète
kubectl describe clusterissuer letsencrypt-dns01-prod --context=cluster-ops
5.3 Vérifier le Certificat Wildcard
# Vérifier que le certificat est créé
kubectl get certificate wildcard-dev-tls -n certificates-ops --context=cluster-ops
# Voir les détails
kubectl describe certificate wildcard-dev-tls -n certificates-ops --context=cluster-ops
# Vérifier les challenges DNS
kubectl get challenges -n certificates-ops --context=cluster-ops
Étape 6 : Tester la Génération du Certificat
Une fois déployé via ArgoCD, cert-manager tentera automatiquement de générer le certificat wildcard.
Vous pouvez forcer la régénération en supprimant le certificat :
kubectl delete certificate wildcard-dev-tls -n certificates-ops --context=cluster-ops
Cert-manager le recréera automatiquement.
Troubleshooting
Le certificat ne se génère pas
- Vérifier les logs de cert-manager :
kubectl logs -n cert-manager -l app.kubernetes.io/name=cert-manager --context=cluster-ops --tail=100
- Vérifier que le Secret existe :
kubectl get secret ovh-credentials -n certificates-ops --context=cluster-ops
- Vérifier les credentials OVH :
- Vérifiez que l'Application Key est correcte
- Vérifiez que l'Application Secret dans le Secret Kubernetes est correcte
- Vérifiez que le Consumer Key est correct et valide
Le challenge DNS échoue
- Vérifier que le domaine est résolvable :
dig _acme-challenge.dev.gkdomaine.fr TXT
-
Vérifier les permissions OVH :
- Assurez-vous que l'application API a les permissions pour modifier les zones DNS
- Vérifiez que le Consumer Key est toujours valide
-
Vérifier les détails du challenge :
kubectl describe challenge -n certificates-ops --context=cluster-ops
Erreur "Invalid credentials"
- Vérifiez que l'Application Key, Application Secret et Consumer Key sont corrects
- Vérifiez que le Consumer Key n'a pas expiré
- Régénérez un nouveau Consumer Key si nécessaire
Sécurité
⚠️ Important :
- Ne commitez jamais les credentials OVH dans Git
- Utilisez des secrets Kubernetes pour stocker l'Application Secret
- L'Application Key et Consumer Key sont dans le ClusterIssuer (déployé via Git) - considérez utiliser Sealed Secrets ou External Secrets Operator pour les sécuriser
Documentation OVH
Notes Importantes
- Le domaine
dev.gkdomaine.frdoit être géré par OVH DNS - Les serveurs peuvent rester internes (pas besoin d'accès HTTP depuis Internet)
- Le certificat wildcard couvre tous les sous-domaines
*.dev.gkdomaine.fr - Le secret
wildcard-dev-tlssera synchronisé automatiquement vers le cluster DEV