add webhook ovh
This commit is contained in:
138
helm/certificates/ops/docs/README.md
Normal file
138
helm/certificates/ops/docs/README.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# Gestion des Certificats Let's Encrypt pour le cluster OPS
|
||||
|
||||
Ce chart gère les certificats TLS générés par cert-manager dans le cluster OPS via Let's Encrypt.
|
||||
|
||||
## Stratégie de certificats
|
||||
|
||||
- **Sites publics** (accessibles depuis Internet) → **Certificats individuels** avec `letsencrypt-prod` (HTTP-01)
|
||||
- Exemples : `homarr.dev.gkdomaine.fr`, `longhorn.dev.gkdomaine.fr`
|
||||
- Validation via HTTP-01 challenge (nécessite accès HTTP public)
|
||||
|
||||
- **Sites internes** (accessibles uniquement en interne) → **Certificats wildcard** avec `letsencrypt-dns01-prod` (DNS-01)
|
||||
- Exemples : `*.dev.gkdomaine.fr`, `*.rct.gkdomaine.fr`, `*.prd.gkdomaine.fr`
|
||||
- Validation via DNS-01 challenge (nécessite le webhook OVH)
|
||||
- Un seul certificat wildcard couvre tous les sous-domaines d'un environnement
|
||||
|
||||
## Structure
|
||||
|
||||
- `Chart.yaml` : Définition du chart Helm
|
||||
- `templates/` : Dossiers organisés par application
|
||||
- `homarr/` : Certificats pour l'application Homarr (sites publics)
|
||||
- `longhorn/` : Certificats pour Longhorn (sites publics)
|
||||
- `headlamp/` : Certificats pour Headlamp (sites internes)
|
||||
- `wildcard/` : Certificats wildcard pour les environnements (dev, rct, prd)
|
||||
|
||||
## ClusterIssuers
|
||||
|
||||
### letsencrypt-prod (HTTP-01)
|
||||
- Utilisé pour les certificats individuels des sites publics
|
||||
- Challenge HTTP-01 via Traefik
|
||||
- Pas besoin de configuration DNS supplémentaire
|
||||
|
||||
### letsencrypt-dns01-prod (DNS-01)
|
||||
- Utilisé pour les certificats wildcard des sites internes
|
||||
- Challenge DNS-01 via webhook OVH
|
||||
- Nécessite le secret `ovh-credentials` avec les credentials OVH API
|
||||
|
||||
## Ajout d'un nouveau certificat
|
||||
|
||||
### Pour un site public (certificat individuel)
|
||||
|
||||
```yaml
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: <app>-<env>-tls
|
||||
namespace: certificates-ops
|
||||
spec:
|
||||
secretName: <app>-<env>-tls
|
||||
issuerRef:
|
||||
name: letsencrypt-prod # HTTP-01 pour sites publics
|
||||
kind: ClusterIssuer
|
||||
dnsNames:
|
||||
- <app>.<env>.gkdomaine.fr
|
||||
```
|
||||
|
||||
### Pour un site interne (utiliser le wildcard)
|
||||
|
||||
**Option 1 : Utiliser le certificat wildcard existant (recommandé)**
|
||||
|
||||
Pas besoin de créer un Certificate ! Utilisez directement le secret wildcard dans votre Ingress :
|
||||
|
||||
```yaml
|
||||
# Dans votre values.yaml ou Ingress
|
||||
ingress:
|
||||
tls:
|
||||
- secretName: wildcard-dev-tls # Utilise le wildcard
|
||||
hosts:
|
||||
- headlamp.dev.gkdomaine.fr
|
||||
```
|
||||
|
||||
**Option 2 : Créer un certificat individuel avec DNS-01**
|
||||
|
||||
Si vous avez besoin d'un certificat spécifique (par exemple pour un domaine différent) :
|
||||
|
||||
```yaml
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: <app>-<env>-tls
|
||||
namespace: certificates-ops
|
||||
spec:
|
||||
secretName: <app>-<env>-tls
|
||||
issuerRef:
|
||||
name: letsencrypt-dns01-prod # DNS-01 pour sites internes
|
||||
kind: ClusterIssuer
|
||||
dnsNames:
|
||||
- <app>.<env>.gkdomaine.fr
|
||||
```
|
||||
|
||||
## Déploiement
|
||||
|
||||
Les certificats sont déployés automatiquement via l'ApplicationSet `certificates-apps` dans ArgoCD.
|
||||
|
||||
## Prérequis
|
||||
|
||||
### Pour les certificats wildcard (DNS-01)
|
||||
|
||||
1. **Webhook OVH installé** : Le webhook `cert-manager-webhook-ovh` doit être installé
|
||||
2. **Secret OVH credentials** : Le secret `ovh-credentials` doit exister dans le namespace `certificates-ops`
|
||||
- Voir `templates/secret-ovh-credentials.yaml` pour le template
|
||||
- Créez le secret avec vos vraies credentials OVH API
|
||||
|
||||
### Pour les certificats individuels (HTTP-01)
|
||||
|
||||
- Aucun prérequis supplémentaire
|
||||
- Le cluster OPS doit avoir accès Internet
|
||||
- Les domaines doivent être accessibles publiquement via HTTP
|
||||
|
||||
## Vérification
|
||||
|
||||
```bash
|
||||
# Vérifier les certificats
|
||||
kubectl get certificates -n certificates-ops --context=cluster-ops
|
||||
|
||||
# Vérifier un certificat spécifique
|
||||
kubectl describe certificate wildcard-dev-tls -n certificates-ops --context=cluster-ops
|
||||
|
||||
# Vérifier les secrets TLS créés
|
||||
kubectl get secrets -n certificates-ops --context=cluster-ops | grep tls
|
||||
|
||||
# Vérifier les ClusterIssuers
|
||||
kubectl get clusterissuers --context=cluster-ops
|
||||
```
|
||||
|
||||
## Synchronisation vers les autres clusters
|
||||
|
||||
Les secrets TLS générés dans OPS doivent être synchronisés vers les clusters DEV/RCT/PRD où les applications sont déployées.
|
||||
|
||||
Utilisez le script `scripts/sync-all-certificates.sh` pour synchroniser automatiquement tous les secrets TLS.
|
||||
|
||||
## Notes importantes
|
||||
|
||||
- Les certificats sont créés dans le cluster OPS où cert-manager est installé
|
||||
- Le namespace du Certificate doit être `certificates-ops`
|
||||
- Pour utiliser le certificat dans d'autres clusters (DEV, RCT, PRD), le secret TLS doit être synchronisé depuis OPS
|
||||
- Les certificats wildcard couvrent tous les sous-domaines d'un environnement (ex: `*.dev.gkdomaine.fr`)
|
||||
- Les certificats individuels sont spécifiques à un domaine (ex: `homarr.dev.gkdomaine.fr`)
|
||||
|
||||
Reference in New Issue
Block a user