add wildcard
This commit is contained in:
165
helm/certificates/ops/docs/CONFIGURATION-DNS01.md
Normal file
165
helm/certificates/ops/docs/CONFIGURATION-DNS01.md
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user