Retour aux articles
blog — devops — zsh$ cat devops.md# 20 nov. 2025Talos rend Kubernetesennuyeux (et c'est unebonne chose)
6 min de lecture

SSH sur les nodes est un anti-pattern. Talos supprime la tentation.

KubernetesTalosDevOpsInfrastructure

Tout le monde dit faire du GitOps. De l’infra as code. Des déploiements immutables. Du bétail, pas des animaux de compagnie

Et puis y a un incident et quelqu’un SSH sur un node pour “checker un truc vite fait”

Le check rapide devient un fix à la main. Ça marche. Personne documente. Trois mois après on remplace le node et le problème revient. Ça te parle?

Talos Linux fait autrement: pas de SSH, pas de shell, pas de package manager. Impossible de tricher, même si t’en as envie

L’illusion du “c’est plus rapide”

SSH ça a l’air rapide. Tu te co, tu mates les logs, tu touches à une config, tu sors. Cinq minutes et c’est plié

Sauf que non. T’as rien résolu, t’as planqué le problème

En vrai ça donne ça:

  • 5 min pour SSH et bricoler
  • 30 min pour te rappeler ce que t’as touché
  • 2h pour documenter comme il faut (spoiler: tu le feras pas)
  • 0 min pour mettre à jour ton automation (parce que “c’est juste ce node-là”)

Le fix reste sur ce node. Ton config management sait pas. Les autres nodes ont pas le fix. T’as créé un flocon de neige

Prochain incident sur un autre node? Même problème, même bidouille, même absence de doc. Et voilà, t’en as deux

J’ai vu des clusters où plus personne ose reboot certains nodes parce qu’ils ont “des configs spéciales”. C’est pas de l’infra ça. C’est une bombe à retardement

Du déclaratif, mais pour de vrai

La plupart des équipes se disent déclaratives mais leurs nodes disent autre chose. Ansible a tourné une fois à l’install, peut-être une autre fois pendant une “fenêtre de maintenance”. Entre les deux? Ça s’accumule, les petits changements à la main

Talos fait l’inverse. Tout l’état du node vient d’un fichier machine config. Point. Pas de modifs au runtime, pas d’install de packages, pas de fichiers édités à la main. Le système, c’est sa config

machine:
  type: worker
  kubelet:
    extraArgs:
      rotate-server-certificates: true
  network:
    hostname: worker-01
    interfaces:
      - interface: eth0
        dhcp: true
  install:
    disk: /dev/sda
    image: ghcr.io/siderolabs/installer:v1.9.0

Cette config définit tout. Tu l’appliques, t’as exactement cet état. Tu la réappliques, même état. Tu la colles sur dix nodes, t’as dix systèmes identiques

Zéro drift. Zéro “ouais mais ce node il est différent parce que…“. Zéro surprise

Et sans shell, tu fais comment?

Première question que tout le monde pose. Logique, un shell c’est pratique

Talos remplace ça par talosctl, un CLI qui cause à l’API Talos. Tout ce que tu faisais en SSH, tu le fais avec

Voir les services:

talosctl services -n 10.0.0.5

Choper les logs:

talosctl logs kubelet -n 10.0.0.5

Messages kernel:

talosctl dmesg -n 10.0.0.5

Ressources système:

talosctl memory -n 10.0.0.5
talosctl cpu -n 10.0.0.5

La diff: c’est du read-only. Tu vois tout mais tu modifies rien directement. Les changements passent par la machine config

Au début ça fait bizarre. Et puis tu te rends compte que t’es plus tenté de “juste régler ce truc vite fait”. Soit tu fixes proprement dans la config, soit tu fixes pas

Des upgrades qui cassent pas les pieds

Les upgrades de nodes à l’ancienne, c’est toute une histoire. Tu mets à jour les packages, tu croises les doigts, tu reboot, tu pries. Peut-être que t’as de l’automation. Peut-être que ça marche à peu près

Avec Talos, les upgrades sont atomiques:

talosctl upgrade --image ghcr.io/siderolabs/installer:v1.9.1 -n 10.0.0.5

L’OS entier est remplacé. Pas patché, remplacé. Si ça foire, rollback instantané vu que l’ancienne image est encore là

Ça marche parce qu’il y a rien à garder. Pas de packages custom, pas de configs bidouillées, pas d’état en dehors de ce que Kubernetes gère. Le node est jetable, c’est fait pour

Mes upgrades Talos, je les fais comme mes upgrades de containers: je pull la nouvelle image, je remplace, terminé. Pas de créneau de maintenance, pas de “pourvu qu’apt pète rien”

Les alternatives

Ubuntu/Debian: Une distro complète, ça veut dire une surface d’attaque complète. Un package manager, ça veut dire du drift potentiel. Un accès shell, ça veut dire que quelqu’un va s’en servir en plein incident

Flatcar Container Linux: Mieux. Minimal, quasi-immutable, pensé pour les containers. Mais t’as toujours le shell, donc tu peux toujours tricher. Et tu le feras, à 2h du mat quand ça crame

Bottlerocket: La réponse d’AWS au problème. Bonne conception, même philosophie que Talos. Mais c’est AWS only. Multi-cloud ou on-prem, c’est mort

Talos tourne partout: bare metal, AWS, GCP, Azure, Hetzner, ton home lab. Même OS, mêmes outils, même façon de bosser

Temps d’apprentissage vs gain opérationnel

Talos, ça s’apprend. Compte deux jours pour être à l’aise, une semaine pour être vraiment efficace. Faut piger le format machine config, le modèle API, comment marchent les upgrades

Mais en échange t’as:

  • Fini le “pourquoi ce node est différent”
  • Fini les enquêtes sur le config drift
  • Fini les accès SSH à auditer
  • Fini le stress des mises à jour de packages
  • Les upgrades passent de “maintenance planifiée” à “tiens je le fais là”

Le temps que tu mets à apprendre Talos, tu le rattrapes dès le premier mois à pas debugger des incohérences entre nodes

Quand éviter Talos

Matos exotique: Talos supporte pas mal de trucs, mais si t’as besoin de modules kernel ou de drivers pas inclus, faudra build des images custom. C’est faisable mais ça rajoute de la complexité

Équipe pas prête: Si ton équipe a besoin du shell pour debugger, Talos va leur donner l’impression de bosser les mains attachées. Faut d’abord avoir une observabilité correcte, des logs et métriques accessibles sans toucher aux nodes

Dépendances legacy: Y a des workloads qui veulent modifier l’host. Vieux agents de monitoring, certains drivers storage, tout ce qui part du principe qu’il peut écrire sur le filesystem. Faut repenser tout ça avant que Talos soit viable

Pourquoi c’est bien que ce soit ennuyeux

Une infra ennuyeuse, c’est une bonne infra. T’as pas envie que ton OS te fasse des surprises. Tu veux qu’il fasse tourner des containers et qu’il te foute la paix

Talos c’est ennuyeux. Chaque node est pareil. Les upgrades sont prévisibles. Y a rien à debugger côté OS parce qu’il y a rien de custom côté OS

Ton cluster Kubernetes devient le seul truc qui compte. Les nodes en dessous sont interchangeables. T’en butes un, t’en relances un autre, état identique en quelques minutes. C’est le modèle bétail vraiment appliqué, pas juste évoqué en réunion

Les équipes que j’ai vues passer à Talos passent moins de temps à gérer les nodes et plus de temps sur l’applicatif. Pas parce que Talos est magique, mais parce qu’il supprime la tentation de faire vite fait mal fait

Tu peux pas SSH pour régler un truc. Donc tu le règles proprement. Et ce qui est réglé proprement, ça revient pas

Vous avez aimé cet article ?

Faites-le savoir ! Un partage, c'est toujours apprécié.

À propos de l'auteur

Sofiane Djerbi

Sofiane Djerbi

Architecte Cloud & Kubernetes, Expert FinOps. J'aide les entreprises à construire des infrastructures scalables, sécurisées et rentables.

Commentaires