delete wildcard

This commit is contained in:
2026-01-21 01:20:09 +01:00
parent 6d2b29bc33
commit d6fd390618
21 changed files with 16 additions and 1351 deletions

View File

@@ -1,79 +0,0 @@
# Construction de l'Image Docker pour cert-manager-webhook-ovh
## Problème
L'image Docker `quay.io/cert-manager-webhook-ovh/cert-manager-webhook-ovh:v1.0.0` n'existe pas ou nécessite une authentification.
## Solution Recommandée : Utiliser l'Image GitHub Container Registry
L'image est disponible sur GitHub Container Registry :
```yaml
image:
repository: ghcr.io/baarde/cert-manager-webhook-ovh
tag: "v0.6.1"
```
Cette image est déjà configurée dans `helm/cert-manager-webhook-ovh/ops/values.yaml`.
## Alternative : Construire l'Image Vous-Même
Si vous préférez construire l'image vous-même (par exemple pour la pousser sur Harbor) :
### Étape 1 : Cloner le Repository
```bash
git clone https://github.com/baarde/cert-manager-webhook-ovh.git
cd cert-manager-webhook-ovh
```
### Étape 2 : Construire l'Image
```bash
# Construire l'image
docker build -t harbor.gkdomaine.local/images/cert-manager-webhook-ovh:v0.6.1 .
# Tester l'image localement (optionnel)
docker run --rm harbor.gkdomaine.local/images/cert-manager-webhook-ovh:v0.6.1 --help
```
### Étape 3 : Pousser l'Image vers Harbor
```bash
# Se connecter à Harbor
docker login harbor.gkdomaine.local
# Pousser l'image
docker push harbor.gkdomaine.local/images/cert-manager-webhook-ovh:v0.6.1
```
### Étape 4 : Mettre à jour values.yaml
```yaml
image:
repository: harbor.gkdomaine.local/images/cert-manager-webhook-ovh
tag: "v0.6.1"
pullPolicy: IfNotPresent
```
## Vérification
Après avoir mis à jour l'image, vérifiez que le pod démarre :
```bash
# Vérifier les pods
kubectl get pods -n cert-manager-ops | grep webhook-ovh
# Voir les logs
kubectl logs -n cert-manager-ops -l app=cert-manager-webhook-ovh
# Vérifier les événements
kubectl get events -n cert-manager-ops --sort-by='.lastTimestamp' | grep webhook-ovh
```
## Notes
- L'image `ghcr.io/baarde/cert-manager-webhook-ovh:v0.6.1` est publique et devrait fonctionner directement
- Si vous utilisez Harbor, vous pouvez construire et pousser l'image pour un contrôle total
- Assurez-vous que votre cluster peut accéder à GitHub Container Registry ou à Harbor selon votre choix

View File

@@ -1,147 +0,0 @@
# 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: <VOTRE_SECRET_ENCODE_EN_BASE64>
```
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`

View File

@@ -1,135 +0,0 @@
# Installation du Webhook OVH pour cert-manager
## Problème
Cert-manager v1.19.2 ne supporte **pas nativement** le provider OVH. L'erreur `no DNS01 provider configured` apparaît car cert-manager ne reconnaît pas la syntaxe `ovh:` directement.
## Solution
Installer le webhook `cert-manager-webhook-ovh` qui ajoute le support OVH à cert-manager.
## Étape 1 : Ajouter le dépôt Helm
```bash
helm repo add cert-manager-webhook-ovh https://cert-manager.github.io/webhook-ovh
helm repo update
```
## Étape 2 : Installer le Webhook OVH
```bash
helm install cert-manager-webhook-ovh cert-manager-webhook-ovh/cert-manager-webhook-ovh \
-n cert-manager-ops \
--create-namespace \
--set groupName=acme.gkdomaine.fr
```
**Important** : Le `groupName` doit correspondre à celui configuré dans le ClusterIssuer (`acme.gkdomaine.fr`).
## Étape 3 : Vérifier l'Installation
```bash
# Vérifier que le webhook est installé
kubectl get pods -n cert-manager-ops | grep webhook-ovh
# Vérifier les logs
kubectl logs -n cert-manager-ops -l app.kubernetes.io/name=cert-manager-webhook-ovh
```
## Étape 4 : Mettre à jour le Secret OVH
Le Secret doit maintenant contenir les 3 clés (application-key, application-secret, consumer-key) :
```bash
kubectl create secret generic ovh-credentials \
--from-literal=application-key=e598bb73ded17ee6 \
--from-literal=application-secret=VOTRE_APPLICATION_SECRET \
--from-literal=consumer-key=372e273858204d972dbf7c50506d12a1 \
-n certificates-ops \
--context=cluster-ops
```
Ou mettez à jour le Secret existant :
```bash
kubectl patch secret ovh-credentials -n certificates-ops \
--type='json' \
-p='[
{"op": "add", "path": "/data/application-key", "value": "'$(echo -n 'e598bb73ded17ee6' | base64)'"},
{"op": "add", "path": "/data/consumer-key", "value": "'$(echo -n '372e273858204d972dbf7c50506d12a1' | base64)'"}
]' \
--context=cluster-ops
```
## Étape 5 : Vérifier le ClusterIssuer
Après installation du webhook, le ClusterIssuer devrait être accepté :
```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
```
## Alternative : Utiliser Cloudflare (si disponible)
Si vous avez accès à Cloudflare pour gérer votre DNS, vous pouvez utiliser Cloudflare qui est supporté nativement par cert-manager :
```yaml
solvers:
- selector:
dnsZones:
- "dev.gkdomaine.fr"
dns01:
cloudflare:
email: gkpoubelle78@gmail.com
apiKeySecretRef:
name: cloudflare-api-key
key: api-key
```
## Troubleshooting
### Le webhook ne démarre pas
1. Vérifiez les logs :
```bash
kubectl logs -n cert-manager-ops -l app.kubernetes.io/name=cert-manager-webhook-ovh
```
2. Vérifiez les événements :
```bash
kubectl get events -n cert-manager-ops --sort-by='.lastTimestamp' | grep webhook-ovh
```
### Le ClusterIssuer est toujours rejeté
1. Vérifiez que le `groupName` correspond :
- Dans le ClusterIssuer : `groupName: acme.gkdomaine.fr`
- Dans l'installation du webhook : `--set groupName=acme.gkdomaine.fr`
2. Vérifiez les logs du webhook cert-manager :
```bash
kubectl logs -n cert-manager-ops -l app.kubernetes.io/component=webhook
```
### Le certificat ne se génère pas
1. Vérifiez que le Secret contient les 3 clés :
```bash
kubectl get secret ovh-credentials -n certificates-ops -o yaml
```
2. Vérifiez les challenges DNS :
```bash
kubectl get challenges -n certificates-ops
kubectl describe challenge -n certificates-ops
```
## Documentation
- [cert-manager-webhook-ovh GitHub](https://github.com/cert-manager/webhook-ovh)
- [Documentation cert-manager DNS-01](https://cert-manager.io/docs/configuration/acme/dns01/)