69 lines
2.3 KiB
Bash
Executable File
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"
|