From 5f7a3ebd034cc74544ea6a3510f00fdfea5f1b2a Mon Sep 17 00:00:00 2001 From: Mathod Date: Tue, 18 Nov 2025 19:28:47 +0100 Subject: [PATCH] + script lb --- kind/fix-argocd-clusters.sh | 175 ++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100755 kind/fix-argocd-clusters.sh diff --git a/kind/fix-argocd-clusters.sh b/kind/fix-argocd-clusters.sh new file mode 100755 index 0000000..10e8812 --- /dev/null +++ b/kind/fix-argocd-clusters.sh @@ -0,0 +1,175 @@ +#!/bin/bash + +set -e + +echo "🔧 Correction des clusters ArgoCD pour KinD multi-cluster" +echo "" + +# Couleurs pour l'affichage +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +NC='\033[0m' # No Color + +# Fonction pour créer un kubeconfig modifié +create_modified_kubeconfig() { + local cluster_name=$1 + local server_url=$2 + local output_file=$3 + + echo -e "${YELLOW}📝 Création du kubeconfig pour ${cluster_name}...${NC}" + + # Extraire les données du kubeconfig original + kubectl config view --flatten --minify \ + --context "kind-${cluster_name}" > "${output_file}.tmp" + + # Remplacer l'URL du serveur + sed "s|server: https://127.0.0.1:[0-9]*|server: ${server_url}|g" \ + "${output_file}.tmp" > "${output_file}" + + rm "${output_file}.tmp" + + echo -e "${GREEN}✓ Kubeconfig créé: ${output_file}${NC}" +} + +# Vérifier que nous sommes sur le contexte management +current_context=$(kubectl config current-context) +if [[ "$current_context" != "kind-management" ]]; then + echo -e "${RED}❌ Erreur: Vous devez être sur le contexte kind-management${NC}" + echo "Exécutez: kubectl config use-context kind-management" + exit 1 +fi + +# Vérifier qu'ArgoCD est installé +if ! kubectl get namespace argocd &> /dev/null; then + echo -e "${RED}❌ Erreur: Le namespace argocd n'existe pas${NC}" + echo "Installez ArgoCD d'abord avec:" + echo "kubectl create namespace argocd" + echo "kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml" + exit 1 +fi + +echo "" +echo "🔍 Détection des clusters..." + +# Créer un répertoire temporaire +TEMP_DIR=$(mktemp -d) +echo "📁 Répertoire temporaire: ${TEMP_DIR}" + +# Configuration des clusters +declare -A CLUSTERS +CLUSTERS["production"]="https://production-external-load-balancer:6443" +CLUSTERS["development"]="https://development-control-plane:6443" + +echo "" +echo "🔑 Création des kubeconfigs modifiés..." + +for cluster in "${!CLUSTERS[@]}"; do + server_url="${CLUSTERS[$cluster]}" + kubeconfig_file="${TEMP_DIR}/${cluster}-kubeconfig.yaml" + + # Vérifier que le contexte existe + if ! kubectl config get-contexts "kind-${cluster}" &> /dev/null; then + echo -e "${RED}❌ Le contexte kind-${cluster} n'existe pas${NC}" + continue + fi + + create_modified_kubeconfig "$cluster" "$server_url" "$kubeconfig_file" +done + +echo "" +echo "📦 Enregistrement des clusters dans ArgoCD..." + +# Fonction pour enregistrer un cluster +register_cluster() { + local cluster_name=$1 + local kubeconfig_file=$2 + + echo -e "${YELLOW}🔗 Enregistrement du cluster ${cluster_name}...${NC}" + + # Supprimer le cluster s'il existe déjà + kubectl delete secret -n argocd "cluster-kind-${cluster_name}" 2>/dev/null || true + + # Créer le secret pour le cluster + # Note: argocd doit être dans le PATH ou utilisez le kubectl + if command -v argocd &> /dev/null; then + # Méthode avec argocd CLI + argocd cluster add "kind-${cluster_name}" \ + --name "${cluster_name}" \ + --kubeconfig "${kubeconfig_file}" \ + --yes 2>/dev/null || { + echo -e "${RED}❌ Échec avec argocd CLI, tentative avec kubectl...${NC}" + register_cluster_kubectl "$cluster_name" "$kubeconfig_file" + } + else + # Méthode alternative avec kubectl directement + register_cluster_kubectl "$cluster_name" "$kubeconfig_file" + fi + + echo -e "${GREEN}✓ Cluster ${cluster_name} enregistré${NC}" +} + +# Fonction alternative pour enregistrer via kubectl +register_cluster_kubectl() { + local cluster_name=$1 + local kubeconfig_file=$2 + + # Extraire les informations du kubeconfig + local server=$(grep "server:" "$kubeconfig_file" | awk '{print $2}') + local ca_data=$(grep "certificate-authority-data:" "$kubeconfig_file" | awk '{print $2}') + local cert_data=$(grep "client-certificate-data:" "$kubeconfig_file" | awk '{print $2}') + local key_data=$(grep "client-key-data:" "$kubeconfig_file" | awk '{print $2}') + + # Créer le secret + cat <