Talos Linux, un OS sécurisé pour déployer rapidement vos clusters Kubernetes

Sommaire
- Talos Linux, qu’est-ce que c’est ?
- Caractéristiques principales de Talos Linux
- Conception et architecture de Talos OS
- Exemple d’installation d’un cluster Kubernetes avec Talos Linux
- Conclusion
Talos Linux, qu’est-ce que c’est ?
Talos est une distribution Linux moderne conçue spécifiquement pour Kubernetes qui met l’accent sur la sécurité, l’immuabilité et le minimalisme. Développée par Sidero Labs, elle automatise la gestion des nœuds Kubernetes, dans le but de créer un environnement d’orchestration de conteneurs plus sûr et plus facile à gérer. Contrairement aux distributions Linux traditionnelles, Talos Linux élimine une grande partie des services inutiles et des vulnérabilités de sécurité potentielles en adoptant une approche d’infrastructure immuable, où le système d’exploitation est en lecture seule, avec des mises à jour atomiques.
Caractéristiques principales de Talos Linux
- Multi plateforme : prise en charge des plateformes Cloud, bare metal et de virtualisation.
- Conception axée sur la sécurité : Talos Linux améliore la sécurité des clusters Kubernetes en réduisant la surface d’attaque avec une empreinte minimale du système d’exploitation et une infrastructure immuable.
- Gestion pilotée par API : au lieu de SSH, Talos Linux est géré via une API sécurisée, ce qui réduit le risque d’erreurs manuelles et permet une gestion automatisée et cohérente.
- Opérations simplifiées : grâce à la gestion automatisée des nœuds et des clusters, Talos simplifie les opérations Kubernetes, rendant les déploiements plus fiables et plus évolutifs.
Conception et architecture de Talos OS
Talos OS est construit autour de l’idée que le système d’exploitation hôte d’un cluster Kubernetes devrait être aussi minimal et sécurisé que possible. Pour atteindre cet objectif, Talos OS élimine de nombreux composants traditionnels des systèmes d’exploitation, tels que les shells, les interpréteurs de commandes, et les utilitaires de gestion de paquets. À la place, Talos OS fonctionne avec un ensemble réduit de binaires nécessaires pour exécuter Kubernetes, réduisant ainsi la surface d’attaque potentielle et simplifiant la maintenance.
L’une des caractéristiques distinctives de Talos OS est son immutabilité : une fois déployé, le système d’exploitation ne peut pas être modifié. Cette approche empêche les modifications non autorisées et réduit les risques de faille de sécurité.
Les mises à jour se font via des remplacements atomiques de l’image système, assurant une transition en douceur entre les versions sans temps d’arrêt significatif.
Exemple d’installation d’un cluster Kubernetes avec Talos Linux
Dans cet exemple, nous verrons comment installer et déployer rapidement un cluster Kubernetes avec Talos Linux de façon sécurisée, ainsi que la configuration d’une Shared VIP pour pouvoir communiquer avec nos control planes via une seule adresse IP. Nous allons installer celui-ci sur la plateforme de virtualisation Proxmox, mais vous pouvez l’installer sur de nombreuses autres plateformes en suivant le guide d’installation de la documentation officiel.
Pour commencer, il suffit de créer simplement une VM classique pour chaque nœud avec au minimum 2Go de RAM en utilisant l’iso de Talos.
Dans notre exemple, nous avons créé 2 control planes et 3 workers :
Il faut maintenant démarrer le control plane et lui assginer une adresse IP. Deux choix s’offrent à vous :
- Avoir installé un DHCP qui attribue une adresse IP à la machine automatiquement (notre choix dans cet exemple),
- Attribuer une IP manuellement lors du boot de la machine. Si vous souhaitez le faire manuellement il suffit d’appuyer sur
e
lors du boot de la machine et de renseigner l’adresse IP à la fin de la ligne linux/boot/vmlinuz sous le format suivant :
ip=<client-ip>:<srv-ip>:<gw-ip>:<netmask>:<host>:<device>:<autoconf>
Voici un exemple de configuration manuelle en choissiant l’IP 10.0.0.61
pour notre premier control plane :
Une fois l’IP assignée, votre control plane boot sur l’iso et passe en mode maintenance en attendant sa configuration.
Vous pouvez répéter cette étape pour tout vos nœuds.
Pour configurer le cluster Kubernetes il faut installer le cli de Talos, talosctl agit comme un client pour l’API de Talos. Il vous permet d’effectuer des opérations complexes en utilisant des commandes simples comme le déploiement, la configuration, la gestion et la mise à jour de vos nœuds.
Pour l’installer, exécuter cette commande :
curl -sL https://talos.dev/install | sh
Il y a deux façons courantes d’utiliser une Shared VIP sur votre cluster Talos, la première est le combo classique haproxy et keepalived. Pour la deuxième méthode, Talos met à disposition la création d’une shared VIP. Nous allons donc maintenant configurer celle-ci et configurer notre cluster.
À noter qu’une Shared VIP est, comme son nom l’indique, une IP partagée par l’ensemble des control planes. Elle est donc assignée à un control plane. Si ce-dernier reboot ou devient KO, elle sera automatiquement assignée à un autre control plane et vous ne perdrez pas l’accès à votre cluster.
Pour l’adresse IP de la VIP, prenez-en une qui n’est pas utilisée au sein de votre réseau. Dans notre cas nous prendrons l’IP 10.0.0.50 qui est en dehors de notre range dhcp.
Pour configurer vos nœuds il faut générer les fichiers de configuration grâce à talosctl :
talosctl gen config talos-proxmox-cluster https://$VIP_IP:6443 --output-dir _out
Cette commande va générer 3 fichiers dans le dossier _out :
- controlplane.yaml : ce fichier contient la configuration nécessaire pour initialiser les nœuds des control planes. Il inclut des détails tels que la configuration réseau, les paramètres de sécurité, les options spécifiques au control plane, et tout ce qui est nécessaire pour que les nœuds fonctionnent correctement.
- workers.yaml : ce fichier de configuration est destiné aux nœuds des workers, ceux qui exécuteront les conteneurs et applications de votre cluster. Tout comme le fichier de configuration du control plane, il contient des informations sur la configuration réseau, la sécurité, et d’autres paramètres spécifiques nécessaires pour intégrer les nœuds des workers.
- talosconfig : ce fichier est un peu différent des deux premiers, car il s’agit d’un fichier de configuration client pour talosctl lui-même. Il contient les informations nécessaires pour se connecter et interagir de manière sécurisée avec votre cluster Talos OS, y compris les adresses des nœuds, les certificats client, et les clés privées.
Vous pouvez personnaliser votre cluster en modifiant ces fichiers (changer le nom de celui-ci, changer le endpoint, configurer le network et beaucoup d’autres options). Pour le moment nous allons nous concentrer sur l’ajout d’une Shared VIP, nous verrons la configuration de ces fichiers plus en détails dans un autre article.
Pour cela, il faut modifier le fichier _out/controlplane.yaml
et rajouter ces lignes dans la partie machine/network
:
machine:
network:
interfaces:
- deviceSelector:
busPath: "0*"
dhcp: true
vip:
ip: $VIP_IP
La partie deviceSelector
sert à sélectionner automatiquement votre interface si il y en qu’une seule, mais pouvez aussi la déclarer directement via le block suivant :
machine:
network:
interfaces:
- interface: eth0
dhcp: true
vip:
ip: $VIP_IP
Si vous n’utilisez pas de DHCP
vous pouvez supprimer la ligne correspondante.
Une fois votre Shared VIP configurée, il faut appliquer cette configuration à tout vos control planes avec talosctl :
talosctl apply-config --insecure --nodes $CONTROL_PLANE_IP --file _out/controlplane.yaml
Faites de même avec tout les workers mais cette fois-ci avec le fichier worker.yaml :
talosctl apply-config --insecure --nodes $WORKER_IP --file _out/worker.yaml
Vos nœuds vont passer à l’état installing
puis booting
en attendant que le cluster etcd
soit opérationnel.
Pour finir, il faut configurer Talos Linux afin de discuter avec votre control plane en exécutant les commandes suivantes :
export TALOSCONFIG="_out/talosconfig"
talosctl config endpoint $CONTROL_PLANE_IP
talosctl config node $CONTROL_PLANE_IP
Ces commandes vont tout simplement remplir le fichier talosconfig
. La VIP n’étant disponible qu’après le bootstrap, il faut configurer le endpoint et le node par l’un des control planes. Toutefois, c’est aussi une bonne pratique de ne pas mettre la VIP dans votre fichier de configuration pour talosctl
car si votre VIP ne fonctionne pas, vous perdrez tous les moyens de contact avec votre cluster. Il est donc préférable de laisser l’IP d’un control plane dans le fichier talosctl. Enfin, il ne vous reste plus qu’à lancer la commande de bootstrap pour former le cluster etcd
:
talosctl bootstrap
Après un court moment, vos nodes passent maintenant à l’état running
et ready true
.
Vous pouvez utilisez talosctl pour générer le kubeconfig
:
talosctl kubeconfig .
Vous pouvez vérifier que le endpoint utilisé est bien votre Shared VIP dans le fichier kubeconfig
.
apiVersion: v1
kind: Config
clusters:
- name: talos-proxmox-cluster
cluster:
server: https://$VIP_IP:6443
Une fois le cluster etcd
formé et le kubeconfig
généré, vous pouvez rajouter tout les nodes avec les mêmes commandes :
talosctl config nodes $CONTROL_PLANE_IP1 $CONTROL_PLANE_IP2 $WORKER_IP1 $WORKER_IP2 $WORKER_IP3
Vous pouvez intéragir avec celui-ci via talosctl :
talosctl containers
Cette commande va afficher tous les containers du namespace system
Votre cluster Kubernetes et maintenant prêt à accueilir vos pods de façon sécurisée !
Vous souhaitez rajouter des noeuds après l’installation et la configuration de votre cluster ? Rien de plus simple ! Il vous suffit de construire de nouvelles machines virutelles et d’appliquer le fichier correspondant au rôle que vous voulez donner à votre noeud. Comme pour l’installation et il sera opérationnel en quelques secondes sur votre cluster.
Conclusion
Talos Linux offre une solution rapide, robuste et sécurisée pour le déploiement et la gestion de clusters Kubernetes. Grâce à sa conception axée sur la sécurité, son infrastructure immuable et sa gestion simplifiée via API, Talos se présente comme une alternative prometteuse aux distributions Linux traditionnelles pour l’organisation de vos clusters.
Notre exemple d’installation sur Proxmox démontre la facilité avec laquelle un cluster Kubernetes peut être déployé et configuré. Il met également l’accent sur la sécurité et l’efficacité grâce à l’utilisation d’une Shared VIP pour une gestion centralisée des accès.
Bien que cet article ait introduit les bases de l’installation et de la configuration d’un cluster Kubernetes avec Talos Linux, de nombreux aspects méritent une exploration plus approfondie. Dans un prochain article, nous examinerons en détails la configuration des fichiers de Talos, la mise à jour des noeuds via talosctl et bien d’autres fonctionnalités…