Files
argocd/docs/TLS-SECRETS-SYNC.md

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