61 lines
2.2 KiB
Bash
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 ==="
|
|
|