2.2 KiB
2.2 KiB
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 :
#!/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-opssur cluster OPS - Destination : Namespaces des applications sur clusters DEV/RCT/PRD
- Mécanisme : Jobs Kubernetes (nécessite configuration manuelle)
Prochaines étapes
- Configurer les contextes kubectl pour accéder aux différents clusters
- Tester la synchronisation manuelle
- Automatiser via CronJob ou External Secrets Operator