Files
argocd/scripts/sync-tls-secret.sh

61 lines
2.2 KiB
Bash

#!/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 ==="