102 lines
3.2 KiB
Markdown
102 lines
3.2 KiB
Markdown
# Gestion des Certificats TLS pour le cluster OPS
|
|
|
|
Ce chart gère les certificats TLS générés par cert-manager dans le cluster OPS.
|
|
|
|
## Stratégie de certificats
|
|
|
|
- **Sites publics** (`.fr`) → **Let's Encrypt** (`letsencrypt-prod`)
|
|
- Validation HTTP-01, nécessite accès Internet
|
|
- Certificats reconnus par tous les navigateurs
|
|
|
|
- **Sites internes** (`.local`) → **PKI Interne** (`ca-issuer`)
|
|
- Certificats signés par votre CA root interne
|
|
- Pas besoin d'accès Internet
|
|
- Voir [PKI Interne](../../../../docs/PKI-INTERNE.md) pour plus de détails
|
|
|
|
## Structure
|
|
|
|
- `Chart.yaml` : Définition du chart Helm
|
|
- `templates/` : Dossiers organisés par application (uniquement des fichiers YAML)
|
|
- `homarr/` : Certificats pour l'application Homarr
|
|
- `[autre-app]/` : Certificats pour d'autres applications
|
|
- `docs/` : Documentation par application
|
|
- `homarr/README.md` : Documentation pour les certificats Homarr
|
|
|
|
**⚠️ IMPORTANT** : Seuls les fichiers YAML doivent être dans `templates/`. Les fichiers de documentation doivent être dans `docs/`.
|
|
|
|
## Ajout d'un nouveau certificat
|
|
|
|
### Pour une application existante
|
|
|
|
Ajoutez un fichier dans le dossier de l'application (ex: `templates/homarr/`) :
|
|
|
|
#### Pour un site public (`.fr`) - Let's Encrypt
|
|
|
|
```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
|
|
kind: ClusterIssuer
|
|
dnsNames:
|
|
- <domain>.fr
|
|
```
|
|
|
|
#### Pour un site interne (`.local`) - PKI Interne
|
|
|
|
```yaml
|
|
apiVersion: cert-manager.io/v1
|
|
kind: Certificate
|
|
metadata:
|
|
name: <app>-<env>-tls
|
|
namespace: certificates-ops
|
|
annotations:
|
|
# IMPORTANT: Les certificats utilisant ca-issuer doivent être créés
|
|
# après que la PKI soit initialisée (sync-wave "2")
|
|
argocd.argoproj.io/sync-wave: "2"
|
|
spec:
|
|
secretName: <app>-<env>-tls
|
|
issuerRef:
|
|
name: ca-issuer # PKI interne pour domaines .local
|
|
kind: ClusterIssuer
|
|
dnsNames:
|
|
- <domain>.local
|
|
```
|
|
|
|
**⚠️ Important pour les certificats internes** : Ajoutez toujours l'annotation `argocd.argoproj.io/sync-wave: "2"` pour garantir que la PKI est initialisée avant la création du certificat.
|
|
|
|
### Pour une nouvelle application
|
|
|
|
1. Créez un nouveau dossier dans `templates/` : `templates/<app>/`
|
|
2. Créez le fichier Certificate dans ce dossier (uniquement des fichiers YAML)
|
|
3. Optionnellement, créez un `README.md` dans `docs/<app>/` pour documenter les certificats de cette application
|
|
|
|
## Déploiement
|
|
|
|
Les certificats sont déployés automatiquement via l'ApplicationSet `certificates-apps` dans ArgoCD.
|
|
|
|
## Vérification
|
|
|
|
```bash
|
|
# Vérifier les certificats
|
|
kubectl get certificates -A
|
|
|
|
# Vérifier un certificat spécifique
|
|
kubectl describe certificate homarr-dev-tls -n homarr-dev
|
|
|
|
# Vérifier le secret TLS créé
|
|
kubectl get secret homarr-dev-tls -n homarr-dev
|
|
```
|
|
|
|
## Notes importantes
|
|
|
|
- Les certificats sont créés dans le cluster OPS où cert-manager est installé
|
|
- Le namespace du Certificate doit correspondre au namespace où le secret TLS sera utilisé
|
|
- Pour utiliser le certificat dans d'autres clusters (DEV, RCT, PRD), le secret TLS doit être synchronisé depuis OPS
|
|
|