Téléchargement et préparation des binaires
Pour commencer, nous utilisons le script ezdown afin de récupérer les versions recommandées de Kubernetes, Docker et des outils associés. Pour consulter l'ensemble des options disponibles, exécutez ./ezdown sans argument.
# Téléchargement des composants par défaut
./ezdown -D
# (Optionnel) Téléchargement des paquets système hors ligne pour les environnements sans accès aux dépôts yum/apt
./ezdown -P
Une fois le script terminé, l'intégralité des ressources (code source de Kubeasz, binaires et images Docker) est organisée dans le répertoire /etc/kubeasz :
/etc/kubeasz: contient le code source de la version courante de Kubeasz./etc/kubeasz/bin: regroupe les exécutables pour k8s, etcd, docker et les plugins CNI./etc/kubeasz/down: stocke les images de conteneurs nécessaires en mode hors ligne./etc/kubeasz/down/packages: conteint les paquets système de base requis pour l'installation.
Initialisation de l'environnement de déploiement
L'outil Kubeasz doit être exécuté dans un conteneur dédié. La commande suivante prépare cet environnement :
./ezdown -S
Configuration de l'authentification SSH et des prérequis
Le nœud de contrôle Ansible doit pouvoir se connecter à tous les nœuds du cluster sans intervention manuelle. Nous allons générer une clé SSH et la distribuer, tout en nous assurant que Python 3 est correctement lié sur chaque machine cible.
# Génération d'une clé Ed25519 (plus sécurisée que l'algorithme RSA traditionnel)
ssh-keygen -t ed25519 -C "admin@k8s-deploy" -f ~/.ssh/k8s_deploy_key -N ""
# Définition des adresses IP de tous les nœuds (maîtres et travailleurs)
CLUSTER_NODES="10.0.1.10 10.0.1.11 10.0.1.12 10.0.1.13"
# Distribution de la clé et configuration de l'environnement Python sur chaque nœud
for node_ip in $CLUSTER_NODES; do
ssh-copy-id -i ~/.ssh/k8s_deploy_key.pub root@$node_ip
ssh root@$node_ip "ln -sf /usr/bin/python3 /usr/bin/python"
done
Création et paramétrage du cluster
Nous pouvons maintenant initialiser la structure de configuration pour notre nouveau cluster. Dans cet exemple, nous le nommerons k8s-production.
# Lancement du conteneur Kubeasz et création du profil du cluster
docker exec -it kubeasz ezctl new k8s-production
Cette opération génère les fichiers de configuration spécifiques au cluster :
DEBUG generate custom cluster files in /etc/kubeasz/clusters/k8s-production
DEBUG set version of common plugins
DEBUG cluster k8s-production: files successfully created.
INFO next steps 1: to config '/etc/kubeasz/clusters/k8s-production/hosts'
INFO next steps 2: to config '/etc/kubeasz/clusters/k8s-production/config.yml'
Les étapes suivantes consistent à éditer manuellement les fichiers générés :
- /etc/kubeasz/clusters/k8s-production/hosts : définissez ici l'inventaire de vos nœuds (adresses IP, rôles) selon votre architecture cible.
- /etc/kubeasz/clusters/k8s-production/config.yml : ajustez les paramètres globaux du cluster, les versions des composants additionnels et les options réseau (CNI).