Talos Linux : l'OS sans SSH
Quand j’ai découvert Talos Linux, ma première réaction a été : “Attends, y’a pas de SSH ?”. Et oui, c’est exactement ça. Et c’est le but.
C’est quoi Talos ?
Talos Linux c’est un OS minimaliste conçu uniquement pour faire tourner Kubernetes. Pas de shell, pas de SSH, pas de package manager. Tout se fait via une API.
L’idée c’est : si tout passe par l’API, tu peux pas faire de modifications manuelles qui créent du drift. Ta config est 100% déclarative et reproductible.
Pourquoi j’ai choisi Talos
Plusieurs raisons :
- Immutable : Le système de fichiers est en lecture seule. Pas de “j’ai oublié ce que j’ai installé”
- Sécurisé : Pas de shell = surface d’attaque réduite
- Boot rapide : ~45 secondes du POST au cluster ready
- Kubernetes-native : C’est fait pour ça, pas adapté après coup
L’installation
L’installation via iDRAC c’était smooth. Télécharger l’ISO Talos, le monter en Virtual Media, booter dessus.
Le serveur boot en mode maintenance avec une IP DHCP. À partir de là, tout se fait avec talosctl depuis mon Mac.
# Générer la config
talosctl gen config mon-cluster https://192.168.1.100:6443
# Appliquer la config au node
talosctl apply-config --insecure \
--nodes 192.168.1.50 \
--file controlplane.yaml
Le serveur reboot, installe Talos sur le disque, et revient avec l’IP statique configurée.
Le choc culturel
Les premiers jours, c’était bizarre. T’as un problème ? T’as l’habitude de faire ssh root@server et de regarder les logs. Avec Talos, c’est :
# Voir les logs
talosctl -n 192.168.1.100 logs kubelet
# Voir les services
talosctl -n 192.168.1.100 services
# Voir dmesg
talosctl -n 192.168.1.100 dmesg
Au début tu te sens perdu. Après tu te rends compte que t’as accès à tout ce dont t’as besoin, juste pas de la manière habituelle.
Les galères
Le réseau
Ma première config réseau marchait pas. J’avais oublié de mettre le bon gateway. Résultat : le node était inaccessible après le reboot.
Heureusement, via la console iDRAC, j’ai pu voir que Talos affichait son IP. J’ai pu corriger et réappliquer la config.
Le registry local
Je voulais un registry Docker local en HTTP (pas HTTPS). Par défaut, Talos refuse de pull depuis des registries non-sécurisés.
Il faut ajouter ça dans la config :
machine:
registries:
config:
192.168.1.100:30500:
tls:
insecureSkipVerify: true
J’ai passé une heure à comprendre pourquoi mes images se pullaient pas.
Ce que j’ai appris
-
Lire la doc. La doc Talos est excellente. Faut juste prendre le temps de la lire.
-
Garder l’accès console. L’iDRAC c’est ton filet de sécurité. Si tu perds l’accès réseau, t’as toujours la console.
-
Versionner ta config. Ta config Talos, c’est ton infrastructure as code. Mets-la dans Git.
-
C’est pas si compliqué. Une fois que t’as compris le modèle mental, ça devient naturel.
La config finale
Ma config Talos ressemble à ça :
machine:
network:
hostname: r430-k8s-master
interfaces:
- interface: eth0
addresses:
- 192.168.1.100/24
routes:
- network: 0.0.0.0/0
gateway: 192.168.1.1
nameservers:
- 8.8.8.8
- 1.1.1.1
install:
disk: /dev/sda
bootloader: true
wipe: true
cluster:
network:
cni:
name: flannel
podSubnets:
- 10.244.0.0/16
serviceSubnets:
- 10.96.0.0/12
Simple, déclaratif, reproductible.
Prochain article : Bootstrap Kubernetes - premier cluster, premiers pods.