Files
argocd/docs/CREATION-SECRET-OVH.md
2026-01-21 01:07:37 +01:00

4.3 KiB

Création du Secret OVH pour cert-manager

Problème

Le Secret ovh-credentials n'existe pas dans le namespace certificates-ops, ce qui empêche cert-manager d'utiliser le provider OVH.

Solution

Créez le Secret avec votre Application Secret OVH.

Étape 1 : Récupérer votre Application Secret OVH

Si vous ne l'avez plus, vous devez créer une nouvelle application API OVH :

  1. Allez sur https://eu.api.ovh.com/createApp/
  2. Créez une nouvelle application
  3. Notez l'Application Secret (vous ne pourrez plus le voir après)

Étape 2 : Créer le Secret Kubernetes

Option 1 : Création directe (Recommandée)

kubectl create secret generic ovh-credentials \
  --from-literal=application-secret=VOTRE_APPLICATION_SECRET \
  -n certificates-ops \
  --context=cluster-ops

Remplacez VOTRE_APPLICATION_SECRET par votre vrai Application Secret OVH.

Option 2 : Création depuis un fichier

Créez un fichier ovh-secret.txt avec votre Application Secret :

echo -n 'VOTRE_APPLICATION_SECRET' > ovh-secret.txt
kubectl create secret generic ovh-credentials \
  --from-file=application-secret=ovh-secret.txt \
  -n certificates-ops \
  --context=cluster-ops
rm ovh-secret.txt  # Supprimez le fichier après création

Option 3 : Création via YAML

Créez un fichier ovh-credentials-secret.yaml :

apiVersion: v1
kind: Secret
metadata:
  name: ovh-credentials
  namespace: certificates-ops
type: Opaque
data:
  # Encodez votre Application Secret en base64
  # echo -n 'VOTRE_APPLICATION_SECRET' | base64
  application-secret: <VOTRE_SECRET_ENCODE_EN_BASE64>

Puis appliquez-le :

kubectl apply -f ovh-credentials-secret.yaml --context=cluster-ops

Étape 3 : Vérifier le Secret

# Vérifier que le Secret existe
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

# Décoder pour vérifier (optionnel)
kubectl get secret ovh-credentials -n certificates-ops --context=cluster-ops \
  -o jsonpath='{.data.application-secret}' | base64 -d

Étape 4 : Vérifier le ClusterIssuer

Après avoir créé le Secret, vérifiez que le ClusterIssuer fonctionne :

# Vérifier le ClusterIssuer
kubectl get clusterissuer letsencrypt-dns01-prod --context=cluster-ops

# Voir les détails
kubectl describe clusterissuer letsencrypt-dns01-prod --context=cluster-ops

Vous devriez voir un message indiquant que le ClusterIssuer est prêt.

Étape 5 : Tester le Certificat Wildcard

Une fois le Secret créé, cert-manager devrait pouvoir générer le certificat wildcard :

# Vérifier le certificat
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

Troubleshooting

Le Secret existe mais le certificat ne se génère toujours pas

  1. Vérifier les logs de cert-manager :
kubectl logs -n cert-manager-ops -l app.kubernetes.io/name=cert-manager --context=cluster-ops --tail=100
  1. Vérifier que les credentials OVH sont corrects :

    • Application Key dans le ClusterIssuer
    • Application Secret dans le Secret Kubernetes
    • Consumer Key dans le ClusterIssuer
  2. Vérifier les permissions OVH :

    • L'application API doit avoir les permissions pour modifier les zones DNS
    • Le Consumer Key doit être valide

Erreur "Invalid credentials"

  • Vérifiez que l'Application Secret dans le Secret correspond bien à celui de votre application OVH
  • 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 le Secret avec les vraies valeurs dans Git
  • Le Secret doit être créé manuellement sur le cluster
  • Utilisez des outils comme Sealed Secrets ou External Secrets Operator pour sécuriser les secrets dans Git

Notes

  • Le Secret doit être dans le namespace certificates-ops
  • Le nom du Secret doit être exactement ovh-credentials
  • La clé dans le Secret doit être exactement application-secret