#!/bin/bash # Script pour synchroniser un secret TLS depuis OPS vers un autre cluster set -e # Configuration SECRET_NAME="${1:-homarr-dev-tls}" SOURCE_CLUSTER="${2:-cluster-ops}" SOURCE_NS="${3:-certificates-ops}" TARGET_CLUSTER="${4:-cluster-dev}" TARGET_NS="${5:-homarr-dev}" echo "=== Synchronisation du secret TLS ===" echo "Secret: $SECRET_NAME" echo "Source: $SOURCE_CLUSTER (namespace: $SOURCE_NS)" echo "Destination: $TARGET_CLUSTER (namespace: $TARGET_NS)" echo "" # Vérifier que le secret existe dans la source echo "1. Vérification du secret source..." if ! kubectl get secret "$SECRET_NAME" -n "$SOURCE_NS" --context="$SOURCE_CLUSTER" &>/dev/null; then echo "❌ Erreur: Le secret $SECRET_NAME n'existe pas dans $SOURCE_NS sur $SOURCE_CLUSTER" exit 1 fi # Récupérer le secret echo "2. Récupération du secret depuis $SOURCE_CLUSTER..." kubectl get secret "$SECRET_NAME" -n "$SOURCE_NS" --context="$SOURCE_CLUSTER" -o yaml > /tmp/secret-sync.yaml # Modifier les métadonnées echo "3. Préparation du secret pour $TARGET_CLUSTER..." sed -i.bak '/^ uid:/d' /tmp/secret-sync.yaml sed -i.bak '/^ resourceVersion:/d' /tmp/secret-sync.yaml sed -i.bak '/^ selfLink:/d' /tmp/secret-sync.yaml sed -i.bak '/^ creationTimestamp:/d' /tmp/secret-sync.yaml sed -i.bak "s/namespace: $SOURCE_NS/namespace: $TARGET_NS/" /tmp/secret-sync.yaml # Créer le namespace s'il n'existe pas echo "4. Vérification/création du namespace $TARGET_NS sur $TARGET_CLUSTER..." kubectl create namespace "$TARGET_NS" --context="$TARGET_CLUSTER" --dry-run=client -o yaml | kubectl apply --context="$TARGET_CLUSTER" -f - # Appliquer le secret echo "5. Application du secret sur $TARGET_CLUSTER..." kubectl apply -f /tmp/secret-sync.yaml --context="$TARGET_CLUSTER" # Vérification echo "6. Vérification..." if kubectl get secret "$SECRET_NAME" -n "$TARGET_NS" --context="$TARGET_CLUSTER" &>/dev/null; then echo "✅ Secret $SECRET_NAME synchronisé avec succès vers $TARGET_CLUSTER" else echo "❌ Erreur: Le secret n'a pas été créé sur $TARGET_CLUSTER" exit 1 fi # Nettoyage rm -f /tmp/secret-sync.yaml /tmp/secret-sync.yaml.bak echo "" echo "=== Synchronisation terminée ==="