#!/bin/bash # Partie 1 - Jonction des workers au cluster # À exécuter sur chaque nœud WORKER set -e echo "=== Jonction d'un worker au cluster Kubernetes ===" echo "" echo "Récupérer les informations sur le master avec:" echo " kubeadm token create --print-join-command" echo "" read -p "IP du master (ex: 192.168.1.10): " MASTER_IP read -p "Token (format: xxxxxx.yyyyyyyyyyyyyyyy): " TOKEN read -s -p "CA cert hash (format: sha256:<64 hex>): " CA_HASH echo "" # Validation des formats avant toute exécution # POURQUOI: Passer une commande non validée à sudo permet l'exécution de commandes # arbitraires en root. On reconstruit l'appel kubeadm avec des arguments # explicites pour éviter toute injection. if [[ ! "$MASTER_IP" =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$|^[a-zA-Z0-9._-]+$ ]]; then echo "Erreur: format IP/hostname master invalide" exit 1 fi if [[ ! "$TOKEN" =~ ^[a-z0-9]{6}\.[a-z0-9]{16}$ ]]; then echo "Erreur: format token invalide (attendu: xxxxxx.yyyyyyyyyyyyyyyy)" exit 1 fi if [[ ! "$CA_HASH" =~ ^sha256:[a-f0-9]{64}$ ]]; then echo "Erreur: format CA hash invalide (attendu: sha256:<64 caractères hex>)" exit 1 fi echo "" echo "Composants validés:" echo " Master : ${MASTER_IP}:6443" echo " Token : ${TOKEN:0:6}.****************" echo " CA Hash : sha256:${CA_HASH:7:8}..." echo "" sudo kubeadm join "${MASTER_IP}:6443" \ --token "$TOKEN" \ --discovery-token-ca-cert-hash "$CA_HASH" echo "" echo "✓ Worker joint au cluster avec succès!" echo "" echo "============================================================" echo " RAPPEL CRITIQUE — à faire sur le MASTER une fois TOUS les" echo " workers joints :" echo "" echo " 1. Lister les bootstrap tokens encore valides :" echo " kubeadm token list" echo "" echo " 2. Révoquer chaque token (ils ont un TTL 24h par défaut," echo " mais autant les invalider tout de suite) :" echo " kubeadm token delete " echo "" echo " POURQUOI: Tant qu'un bootstrap token est valide, n'importe" echo " qui qui le récupère peut joindre un nouveau nœud (potentiellement" echo " malveillant) au cluster. C'est un vecteur d'attaque classique." echo "============================================================" echo "" echo "Retournez sur le master et vérifiez avec: kubectl get nodes"