# 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