Pour des besoins professionnels, je dois monter des clusters Kubernetes afin
d’héberger des API. Pour cela, je fais le choix d’utiliser KubeSpray.
KubeSpray est un framework qui permet de provisionner des clusters
Kubernetes sur du bare-metal, mais aussi chez la plupart des clouders,
en utilisant Ansible. Pour tester le tout, je vais utiliser
Ignite que j’ai présenté récemment,
auquel je vais ajouter footloose.
Provisionnement des VM avec Footloose et Ignite
Pour créer rapidement mon cluster de micro-VM je vais utiliser
footloose ↗ un autre projet de
WeaveWorks qui permet de créer rapidement une série de machines. Je vais
créer un cluster kubernetes composés de 3 masters et 2 workers à base de
Centos 8.5.
Pour installer footloose je vous renvoie à mon billet sur ignite
Création de l’image CENTOS 8.5
Je vais mettre à jour l’image et l’injecter dans Ignite. Mon Dockerfile :
On lance le build :
On récupère la version et on tague l’image teste rapidement :
On l’importe dans Ignite :
Maintenant créons nos 5 VM avec Footloose.
Création du cluster de VM avec Footloose
Footloose permet d’utiliser ignite comme backend pour provisionner des micro-VM.
Je vais donc créer un cluster de 5 VM avec 1 CPU / 1.6 GB (le minimum accepté par
kubespray) et 5 GO de disque chacune.
Déclarons notre cluster avec ce fichier :
Lançons le provisionnement en lançant la commande footloose create depuis le
répertoire où se trouve le fichier footloose.yaml :
Il est possible de créer le cluster en indiquant le nom du fichier avec l’option
-c :
On vérifie qu’elles sont bien présentes sous Ignite :
Provisionnement d’un cluster avec Kubepsray
Construction de l’environnement
Dans un premier temps, nous allons récupérer le projet et installer les
requirements.
Éditons le fichier ansible.cfg pour l’adapter à notre besoin. On ajoute
simplement la localisation de la clé SSH et le remote_user (les deux
paramètres avant [inventory]) :
Création de l’inventaire et modification du paramétrage
On va utiliser les outils de KubeSpray pour générer l’inventaire :
Vous devriez vous retrouver avec ce fichier inventory/ignite/hosts.yml
Testons :
Ensuite pour Centos il faut modifier le paramétrage de Calico :
Dans le paramétrage du cluster j’ai désactivé aussi la mise à jour du DNS:
Installation du cluster Kubernetes
Tout est prêt on peut passer à l’installation du cluster.
Au bout de 25 minutes notre cluster est prêt. Récupérons sa configuration.
Créons les entrées dans /etc/hosts
Pour accéder plus facilement aux noeuds un petit quick win Ansible pour
ajouter les hosts de l’inventaire dans /etc/hosts :
Si vous détruisez votre cluster il faudra le rejouer pour mettre les bonnes IP !
On lance le playbook :
Configuration de kubectl
Afin de pouvoir utiliser les commandes kubectl depuis notre poste, on va
récupérer la configuration du cluster et la déposer dans le répertoire .kube:
Récupérer l’adresse de node1 pour remplacer 127.0.0.1 dans la config :
Editez le fichier ~/.kube/config-ignite et remplacer 127.0.0.1 par cette
adresse. On peut aussi changer le nom du context par ignite :
Utilisons les contexts :
Pour changer de contexte utilisons kubectx :
On vérifie qu’on accède au cluster :
Un petit test :
Cela confirme que ignite est très bon remplaçant à vagrant. La création des
nodes s’est faite en moins d’une minute. Donc à nous la destruction et
reconstruction sans perdre de temps. Ça confirme aussi que KubeSpray peut
répondre à mon besoin.