63 lines
2.2 KiB
Markdown
63 lines
2.2 KiB
Markdown
# Synchronisation des Secrets TLS Multi-Cluster
|
|
|
|
## Architecture
|
|
|
|
Les certificats Let's Encrypt sont générés dans le cluster OPS (qui a cert-manager et accès Internet). Les secrets TLS doivent ensuite être synchronisés vers les clusters DEV, RCT et PRD où les applications sont déployées.
|
|
|
|
## Solution actuelle
|
|
|
|
La solution actuelle utilise des Jobs Kubernetes pour copier les secrets, mais nécessite une configuration manuelle des contextes kubectl.
|
|
|
|
## Solution recommandée : Utiliser ArgoCD avec des Applications
|
|
|
|
### Option 1 : Synchronisation manuelle via script
|
|
|
|
Créez un script qui copie les secrets depuis OPS vers les autres clusters :
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# sync-tls-secrets.sh
|
|
|
|
SECRET_NAME="homarr-dev-tls"
|
|
SOURCE_CLUSTER="cluster-ops"
|
|
SOURCE_NS="certificates-ops"
|
|
TARGET_CLUSTER="cluster-dev"
|
|
TARGET_NS="homarr-dev"
|
|
|
|
# Récupérer le secret depuis OPS
|
|
kubectl get secret $SECRET_NAME -n $SOURCE_NS --context=$SOURCE_CLUSTER -o yaml > /tmp/secret.yaml
|
|
|
|
# Modifier les métadonnées
|
|
sed -i '/^ uid:/d' /tmp/secret.yaml
|
|
sed -i '/^ resourceVersion:/d' /tmp/secret.yaml
|
|
sed -i '/^ selfLink:/d' /tmp/secret.yaml
|
|
sed -i '/^ creationTimestamp:/d' /tmp/secret.yaml
|
|
sed -i "s/namespace: $SOURCE_NS/namespace: $TARGET_NS/" /tmp/secret.yaml
|
|
|
|
# Appliquer sur le cluster cible
|
|
kubectl apply -f /tmp/secret.yaml --context=$TARGET_CLUSTER
|
|
|
|
echo "Secret $SECRET_NAME synchronisé de $SOURCE_CLUSTER vers $TARGET_CLUSTER"
|
|
```
|
|
|
|
### Option 2 : Utiliser External Secrets Operator (Recommandé)
|
|
|
|
External Secrets Operator peut synchroniser les secrets depuis un backend (comme Kubernetes secrets dans OPS) vers les autres clusters.
|
|
|
|
### Option 3 : Utiliser un CronJob pour synchronisation automatique
|
|
|
|
Créez un CronJob qui synchronise automatiquement les secrets toutes les heures ou à chaque changement.
|
|
|
|
## Configuration actuelle
|
|
|
|
- **Source** : Namespace `certificates-ops` sur cluster OPS
|
|
- **Destination** : Namespaces des applications sur clusters DEV/RCT/PRD
|
|
- **Mécanisme** : Jobs Kubernetes (nécessite configuration manuelle)
|
|
|
|
## Prochaines étapes
|
|
|
|
1. Configurer les contextes kubectl pour accéder aux différents clusters
|
|
2. Tester la synchronisation manuelle
|
|
3. Automatiser via CronJob ou External Secrets Operator
|
|
|