Bon, faut qu’on cause ! Il existe aujourd’hui beaucoup de distributions d’inspiration ou conçues depuis le début sur ce qu’on appelle l’immuabilité (on est en France, on parle français, Rognotudju !). Découvrons Talos, cette nouvelle distribution dédiée au déploiement et à la gestion de clusters Kubernetes …

L’immuabilité est le terme à la mode depuis quelque temps dans le monde des distributions Linux sécurisées. Je ne vais pas vous faire une liste à la Prévert, mais vous connaissez sans doute déjà CoreOS de Red Hat, NixOS ou Silverblue de Fedora. J’ai découvert un peu par hasard une distribution qui fait le buzz en ce moment : Talos Linux. Cette distribution a deux particularités en rupture avec presque toutes les autres aujourd’hui : d’abord, oubliez SSH ou la bonne vieille CLI, il n’y en a pas ; ensuite, elle est entièrement pilotée via une API qui ressemble beaucoup, dans sa philosophie, à l’API Kubernetes. Pour résumer : autant vous utilisez kubectl pour administrer vos clusters Kubernetes, autant vous allez jouer avec talosctl, la commande équivalente pour Talos Linux.

Dans la pratique, toute l’authentification est géré par des secrets basés sur les certificats et couples de clef publiques/privées. Pas de user/password sur Talos, gage d’une sécurité renforcée.

Mais quoi de mieux que faire avec vous une installation complète d’un cluster Kubvernetes de 3 noeuds masters (control plane) et un noeud worker ? On est parti ? Allez !

La première chose à faire c’est télécharger la bonne image ISO par rapport à votre contexte technique. Talos esst assez agnostique aux environnements d’exécution, autant Cloud qu’On Premise. Pour moi ce sera des VM au sein de mon lab Proxmox, voici le setup départ :

  • 3 VM de 4 Go, 2 Coeurs chacune et 50 Go de disque pour les futurs noeuds master.
  • 1 VM de 8 Go, 4 Coeurs et 100 Go de disque pour le futur worker node

Ensuite, on télécharge l’image ISO via https://factory.talos.dev/ , on downoad l’image, on la connecte sur les VM controlplane et worker. Plus qu’à télécharger une chose : talosctl et ensuite on est prêt ! Je vous laisse regarder la doc, suivant votre environnement il y a pleins de manières différentes.

Première opération : créer des secrets qui seront utilisées ensuite dans toutes les phases suivantes sur les instances elles-mêmes mais aussi le cluster Kube. La documentation officielle est extrèmement bien faite et très lisible, donc plutot que paraphraser maladroitement celle-ci, je vous laisse la suivre à cette adresse : https://docs.siderolabs.com/.

Au niveau infrastructure, il faut assez simplement avoir un accès https depuis les VM et en local, des droits réseaux étendus, mais classiques pour la cible (encore une fois c’est décrit en détail sur la documentation). Ce n’est pas si différent en terme de pré-requis que ceux pour Kubernetes.

Une fois démarrées, toutes les instance Talos sont dites en mode « maintenance ». Vous allez donc les piloter entièrement depuis talosctl.

Voici la liste des commandes que j’ai utilisé pour déployer le cluster Kube que je vous ait présenté, agrémenté de quelques screenshots :

Vous pouvez consulter à loisir la configuration du cluster (talosconfig) ainsi que le manifeste yaml des workers (worker.yaml). Cela reprend les paramètres du fichier env que j’ai créé au départ pour concentrer mon paramétrage initial.

À noter que j’ai déployé, pour les besoins de mon lab, une petite VM simple sous Docker Compose avec Traefik, qui me permet de faire office de load balancer « endpoint ». La machine est en fonctionnement à ce moment et il reste juste à modifier les certificats à utiliser (issus de la configuration initiale, vous le verrez). Si vous avez besoin de la description de celle-ci, dites-le-moi en commentaire et je vous ferai un topic spécifique dans le Wiki de vblog.io. Accessoirement, vous pouvez aussi vous simplifier grandement la vie en jouant avec votre système DNS (allez voir la documentation).

Une chose importante à ne pas oublier quand on lance la configuration initiale du cluster, c’est de déconnecter les images ISO. En effet, Talos stocke tout en mémoire une fois lancé. À partir de là, donc, plus besoin des ISOs ! Vous pouvez déjà interroger vos instances, avant même d’avoir déployé, pour bien vérifier que tout est correctement paramétré dans le talosconfig.:

C’est parti pour la configuration et l’installation initial de notre cluster Kube :

Elles sont techniquement opérationnelles en moins d’une minute ! Bien sûr, tout les conteneurs nécessaires à Kubernetes ne sont pas encore lancés car la base etcd n’est pas encore initialisée, mais tout est désormais prêt pour démarrer le cluster ! en 40 secondes !

Et justement, il reste quelques opérations à faire, comme réaliser un bootstrap sur la base etcd pour terminer l’initialisation, ainsi que déployer le worker. Pour la base etcd, cela ne doit être réalisé que par une seule machine parmi les 3 masters, bien sûr. Donc on termine par ceci en envoyant une directive particulière avec talosctl sur l’un de nos nœuds. On ajoute la nouvelle configuration dans le fichier config de votre répertoire .talos du home directory, comme pour kubectl. Et enfin, on indique à chaque master qu’il fera partie des endpoints potentiels du cluster Kubernetes. :

Votre cluster Kubernetes est opérationnel ! Il faut juste récupérer la config de kubectl pour ensuite tester tout cela, via un simple talosconfig kubeconfig sur un de nos nodes master :

Talos est une distribution particulièrement facile à prendre en main, malgré l’absence d’un CLI ou d’un SSH auxquels tout le monde est habitué depuis plus de 20 ans sous Linux. C’est un nouveau coup à prendre et surtout embrasser entièrement les concepts d’infrastructure-as-code et ceux du DevOps. Franchement, je suis bluffé par cette approche, à laquelle, personnellement, je ne m’étais jamais vraiment frotté jusqu’à aujourd’hui, même pendant mon année de travail personnel pour apprendre et commencer à maîtriser Kubernetes.

Si je compare rapidement avec K3s ou Minikube, c’est vraiment un autre monde dans le sens où Talos se limite à proposer une méthode reproductible et simple pour gérer le déploiement de vos clusters avec une dizaine de commandes à envoyer à l’API. Par la suite, vous allez pouvoir gérer également les mises à jour, les patchs divers et tout le reste par le même biais, ainsi qu’éventuellement « cloner » ou reconstruire votre environnement de production avec uniquement les fichiers de configuration de Talos. Bref, c’est un rêve qu’on peut commencer à toucher du doigt en tant qu’architecte de production.

Mon but était de ne faire qu’effleurer la surface de Talos et vous donner envie de creuser vous-mêmes ! Il y a des trucs assez géniaux que je vous laisse découvrir, comme Omni, au hasard… Franchement, jetez-y un œil 🙂

Des bises et amusez-vous bien, moi je retourne à mon lab 🙂

Références :

Talos Linux et Sidero, la société éditrice : https://www.talos.dev
La vidéo Youtube qui m’a fait découvrir Talos : https://www.youtube.com/@tourainetech37
Quentin Joly, le présentateur et son site : https://une-tasse-de.cafe

Le wiki de vBlog.io : https://wiki.vblog.io

2 réponses

  1. Merci d’être passé, Quentin ! Un Tourangeaux sur vBlog, c’est pas courant et on est pas si loin finalement 🙂 … excellente ta vidéo, à tel point que ça m’a converti à Talos !
    Je vais m’attaquer à Omni dès que j’aurai le temps 🙂

Répondre à Quentin JOLY Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *