# 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/](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) ```bash 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 : ```bash 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` : ```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: ``` Puis appliquez-le : ```bash kubectl apply -f ovh-credentials-secret.yaml --context=cluster-ops ``` ## Étape 3 : Vérifier le Secret ```bash # 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 : ```bash # 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 : ```bash # 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** : ```bash kubectl logs -n cert-manager-ops -l app.kubernetes.io/name=cert-manager --context=cluster-ops --tail=100 ``` 2. **Vérifier que les credentials OVH sont corrects** : - Application Key dans le ClusterIssuer - Application Secret dans le Secret Kubernetes - Consumer Key dans le ClusterIssuer 3. **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`