Files
argocd/helm/certificates/ops/docs/CONFIGURATION-OVH.md
2026-01-21 00:54:28 +01:00

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.fr doit être résolvable publiquement via DNS OVH

Étape 1 : Créer une Application API OVH

1.1 Accéder à l'API OVH

  1. Connectez-vous à votre compte OVH
  2. Allez sur https://eu.api.ovh.com/createApp/ (pour l'Europe)
  3. Connectez-vous avec votre compte OVH

1.2 Créer l'Application

  1. 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
  2. Cliquez sur Create application

  3. Notez les identifiants :

    • Application Key (AK) : xxxxxxxxxxxxxxxx
    • Application Secret (AS) : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

⚠️ 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_KEY par votre Application Key
  • VOTRE_CONSUMER_KEY par votre Consumer Key

4.2 Endpoints OVH disponibles

  • ovh-eu : Pour l'Europe (recommandé pour la France)
  • ovh-us : Pour les États-Unis
  • ovh-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

  1. Vérifier les logs de cert-manager :
kubectl logs -n cert-manager -l app.kubernetes.io/name=cert-manager --context=cluster-ops --tail=100
  1. Vérifier que le Secret existe :
kubectl get secret ovh-credentials -n certificates-ops --context=cluster-ops
  1. 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

  1. Vérifier que le domaine est résolvable :
dig _acme-challenge.dev.gkdomaine.fr TXT
  1. 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
  2. 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.fr doit ê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-tls sera synchronisé automatiquement vers le cluster DEV