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

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-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