add wildcard

This commit is contained in:
2026-01-21 00:54:28 +01:00
parent 22266b7892
commit 31018dc49c
8 changed files with 620 additions and 16 deletions

View File

@@ -0,0 +1,165 @@
# Configuration DNS-01 Challenge pour Certificat Wildcard
## Étapes de Configuration
### 1. Choisir votre Fournisseur DNS
Le ClusterIssuer `letsencrypt-dns01-prod` doit être configuré selon votre fournisseur DNS.
### 2. Configuration Cloudflare (Recommandé)
#### Étape 1 : Créer un Token API Cloudflare
1. Connectez-vous à [Cloudflare](https://dash.cloudflare.com/)
2. Allez dans "My Profile" > "API Tokens"
3. Cliquez sur "Create Token"
4. Utilisez le template "Edit zone DNS" ou créez un token personnalisé avec :
- Permissions : `Zone` > `DNS` > `Edit`
- Zone Resources : `Include` > `Specific zone` > `gkdomaine.fr`
#### Étape 2 : Créer le Secret Kubernetes
```bash
kubectl create secret generic cloudflare-api-key \
--from-literal=api-key=VOTRE_TOKEN_CLOUDFLARE \
-n certificates-ops \
--context=cluster-ops
```
#### Étape 3 : Activer la Configuration dans le ClusterIssuer
Éditez `helm/certificates/ops/templates/cluster-issuer-letsencrypt-dns01.yaml` et décommentez la section Cloudflare :
```yaml
solvers:
- dns01:
cloudflare:
email: gkpoubelle78@gmail.com
apiKeySecretRef:
name: cloudflare-api-key
key: api-key
```
### 3. Configuration Route53 (AWS)
#### Étape 1 : Créer un Utilisateur IAM
Créez un utilisateur IAM avec la politique `AmazonRoute53FullAccess` ou une politique personnalisée.
#### Étape 2 : Créer le Secret Kubernetes
```bash
kubectl create secret generic route53-credentials \
--from-literal=access-key-id=VOTRE_ACCESS_KEY \
--from-literal=secret-access-key=VOTRE_SECRET_KEY \
-n certificates-ops \
--context=cluster-ops
```
#### Étape 3 : Activer la Configuration dans le ClusterIssuer
```yaml
solvers:
- dns01:
route53:
region: eu-west-1
accessKeyIDSecretRef:
name: route53-credentials
key: access-key-id
secretAccessKeySecretRef:
name: route53-credentials
key: secret-access-key
```
### 4. Configuration OVH
#### Étape 1 : Créer une Application API OVH
1. Connectez-vous à [OVH API](https://eu.api.ovh.com/)
2. Créez une application API
3. Notez l'Application Key et l'Application Secret
4. Générez un Consumer Key
#### Étape 2 : Créer le Secret Kubernetes
```bash
kubectl create secret generic ovh-credentials \
--from-literal=application-secret=VOTRE_APPLICATION_SECRET \
-n certificates-ops \
--context=cluster-ops
```
#### Étape 3 : Activer la Configuration dans le ClusterIssuer
```yaml
solvers:
- dns01:
ovh:
applicationKey: "VOTRE_APPLICATION_KEY"
applicationSecretRef:
name: ovh-credentials
key: application-secret
consumerKey: "VOTRE_CONSUMER_KEY"
```
### 5. Autres Fournisseurs DNS
Consultez la [documentation cert-manager](https://cert-manager.io/docs/configuration/acme/dns01/) pour :
- Google Cloud DNS
- Azure DNS
- DigitalOcean
- Namecheap
- Et d'autres...
## Vérification
Après avoir configuré le ClusterIssuer :
```bash
# Vérifier le ClusterIssuer
kubectl get clusterissuer letsencrypt-dns01-prod --context=cluster-ops
# Vérifier la configuration
kubectl describe clusterissuer letsencrypt-dns01-prod --context=cluster-ops
# Vérifier que le certificat wildcard est en cours de génération
kubectl get certificate wildcard-dev-tls -n certificates-ops --context=cluster-ops
# Voir les détails du certificat
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 certificat ne se génère pas
1. Vérifiez que le ClusterIssuer est correctement configuré
2. Vérifiez que le Secret DNS existe et contient les bonnes valeurs
3. Vérifiez les logs de cert-manager :
```bash
kubectl logs -n cert-manager -l app.kubernetes.io/name=cert-manager --context=cluster-ops
```
### Le challenge DNS échoue
1. Vérifiez que le domaine est résolvable publiquement :
```bash
dig _acme-challenge.dev.gkdomaine.fr TXT
```
2. Vérifiez que les permissions API sont correctes
3. Vérifiez les détails du challenge :
```bash
kubectl describe challenge -n certificates-ops --context=cluster-ops
```
## Notes Importantes
- Le domaine `dev.gkdomaine.fr` doit être résolvable publiquement via 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