Dans le premier article, j’ai présenté BMI et le plan de mon mentorat avec Edouard HINVI qui a généreusement mis à ma disposition un VPS qui tourne sous Ubuntu 26.04 LTS, avec environ 8 Go de RAM et 190 Go de disque.
Mon cluster est basé sur K3s, une distribution Kubernetes certifiée, légère, livrée en un seul binaire avec les composants de base déjà inclus. J’ai choisi K3s (et gardé avec ses réglages par défaut) parce que mon workload est simple, léger et que je voulais un cluster que mon VPS puisse porter sans difficulté. Je déplore le fait que l'utilisation de K3s me prive de ce qu'un cluster monté à la main m'aurait faire comprendre.
Le backlog prévoyait de créer le cluster avec Terraform et Cloud-init. Cependant, j'ai retenu Ansible pour l'installation. En effet le VPS qui doit accueillir le cluster existait déjà, et il n'y a donc plus rien à provisionner, seulement k3s à installer. Par ailleurs le projet K3s maintient déjà une collection, k3s-ansible, qui automatise le déploiement et garantit l'idempotence. J'ai donc juste à décrire mon serveur et à lancer le playbook. Si quelque chose tourne mal, je peux relancer sans tout refaire à la main, et retrouver le même résultat sur un autre serveur. Au cas où je devais créer le serveur, Terraform avec Cloud-init serait le choix parfait et m’aurait permis d'obtenir un résultat identique.
Concrètement, j’ai créé avec uv un projet Ansible à part, en dehors du dépôt BMI pour gérer le cluster et les déploiements. Le fichier requirements.yml référence la collection k3s-ansible. Après l'avoir installée avec ansible-galaxy, j'ai éxécuté le playbook k3s.orchestration.site. J’ai ensuite copié le fichier /etc/rancher/k3s/k3s.yaml de mon VPS vers ~/.kube/config sur ma machine en local pour me connecter au cluster. Après avoir testé la connectivité, j'ai constaté avec soulagement que tout fonctionnait sans aucune erreur! J'ai alors créé le manifeste Kubernetes que j'ai appliqué au cluster. L'application BMI fonctionne désormais sans aucun problème sur le cluster et est accessible en HTTPS à l'adresse https://bmi.bitnoises.com.
Je dois être honnête : rien n’a cassé, mais un cluster qui répond ne fait pas un service exploité. Mes difficultés sont plutôt des doutes. Je ne sais pas encore comment organiser le dépôt, ni où le projet Ansible doit vivre par rapport à BMI. Surtout, tout est encore manuel, aussi bien la création du cluster que le déploiement de l’application. Ça marche, mais le déploiement de BMI ne sera pas reproductible tant qu’il ne passe pas par un pipeline. La semaine prochaine, je travaillerai sur l'automatisation du déploiement, le monitoring du cluster et de l'application, et enfin la centralisation des logs.
