@@ -6,16 +6,45 @@ set -e
|
||||
|
||||
echo "=== Jonction d'un worker au cluster Kubernetes ==="
|
||||
echo ""
|
||||
echo "ATTENTION: Ce script nécessite la commande 'kubeadm join' générée par le master"
|
||||
echo ""
|
||||
echo "Si vous n'avez pas la commande, exécutez sur le master:"
|
||||
echo "Récupérer les informations sur le master avec:"
|
||||
echo " kubeadm token create --print-join-command"
|
||||
echo ""
|
||||
read -p "Entrez la commande kubeadm join complète: " JOIN_COMMAND
|
||||
|
||||
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 "Exécution de: $JOIN_COMMAND"
|
||||
sudo $JOIN_COMMAND
|
||||
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!"
|
||||
|
||||
Reference in New Issue
Block a user