Files
k8sec/partie-01-installation/03-join-workers.sh
Louis Labeyrie 1580a13fb6 toto
Signed-off-by: Louis Labeyrie <labeyrielouis@gmail.com>
2026-04-27 16:21:21 +02:00

69 lines
2.3 KiB
Bash
Executable File

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