Présentation
Talos Linux est une distribution Linux spéciale pour Kubernetes.
Elle est chargée en mémoire au lancement. N’a aucun utilisateur. Ni aucun accès SSH.
Tout se fait via une seule entrée : une API. Similaire au fonctionnement de Kubernetes.
Pré-requis pour une installation sur une machine physique
Il faut savoir :
- créer une clé USB bootable à l’aide d’un fichier ISO,
- savoir démarrer la clé USB depuis une machine physique,
- récupérer une adresse MAC de la carte réseau de la machine physique,
- connaître l’interface réseau Linux de votre machine (habituellement s’il n’y a qu’une carte réseau, elle sera nommée eth0 sous TalosLinux),
- trouver le nom de votre ou vos disque(s) sur une distribution Linux. Pour un disque NVME, ça sera nvme0n1 (pour le premier disque nvme) ou sda (pour le premier disque SSD de la machine),
- savoir utiliser la ligne de commande pour utiliser le CLI de Talos Linux (talosctl).
La machine distante :
- son IP : 192.168.x.y (par exemple 192.168.0.100) (doit être un bail statique configuré sur votre box!!!),
- l’adresse du disque : par exemple nvme0n1 (pour un disque SSD NVME),
- l’interface réseau utilisée : eth0,
- le nom que vous voulez lui donner (nom d’hôte) : monServeur.
Sur votre machine locale (avec un système GNU/Linux) :
- l’utilitaire talosctl doit être installé.
Par exemple sur ArchLinux, l’installation se fait ainsi :
pacman -Sy && pacman -S talosctl
Sur votre serveur DHCP (par exemple la Freebox) :
- faites une liaison entre l’adresse MAC de votre interface réseau et une IP (fixe). Aussi appelé bail DHCP statique. Sur Internet on trouve des tutoriels comme https://wxfrantzconcept.wordpress.com/2016/10/18/assigner-une-adresse-ip-fixe-avec-sa-freebox/ .
Premières étapes d’une installation sur une machine physique
- On charge l’image ISO de Talos Linux nommée metal-amd64.iso dans la section “Assets” de la dernière version de Talos Linux disponible sur Github
- On crée une clé USB bootable - ou bien on dépose l’ISO sur Ventoy
Sur la machine distante :
- On démarre la clé USB sur Talos Linux : un Dashboard en mode texte apparaît
- On laisse tel quel pour le moment.
Sur la machine locale :
- Générez le fichier des secrets à l’aide de
talosctl gen secrets, - Puis générez les fichiers de configuration à l’aide de la commande suivante :
talosctl gen config monServeur https://192.168.x.y:6443
où 192.168.x.y est à modifier avec l’adresse IP de votre serveur physique.
Ceci génère de la configuration dont nous allons nous servir.
Préparation de la configuration
Sur la machine locale, la commande précédente a généré 3 fichiers :
- controlplane.yaml,
- talosconfig,
- worker.yaml.
On va désormais agrémenter ces fichiers avec ce qu’on appelle des patchs. Ces patchs vont définir les modifications à faire en surcouche du fichier principal.
On créé un dossier, par exemple patches :
mkdir patches
À l’intérieur de ce dossier on ajoute des patchs. Par exemple pour définir que ce cluster est composé que d’une seule machine (appelé aussi single cluster node - 1 seul nœud avec un worker au même endroit).
On fait un fichier patches/allow-controlplane-workloads.yaml avec le contenu suivant :
---
cluster:
allowSchedulingOnControlPlanes: true
Pour l’interface réseau, patches/dhcp.yaml :
---
machine:
network:
interfaces:
- interface: eth0
dhcp: true
où eth0 est à remplacer avec le nom de votre carte réseau. A priori eth0 va fonctionner pour la plupart des machines n’ayant qu’une seule carte réseau - avec une prise ethernet.
Pour le disque, patches/install-disk.yaml :
---
machine:
install:
disk: /dev/nvme0n1
où nvme0n1 est à remplacer avec le nom de votre disque, comme expliqué dans la section « Pré-requis » de la présente page.
Une fois ces éléments renseignés, on peut générer la configuration finale à l’aide de la commande suivante (à lancer dans un terminal sur la machine locale) :
talosctl gen config monServeur https://192.168.x.y:6443 \
--with-secrets secrets.yaml \
--config-patch @patches/allow-controlplane-workloads.yaml \
--config-patch @patches/dhcp.yaml \
--config-patch @patches/install-disk.yaml \
--output rendered/
Remplacez monServeur et 192.168.x.y par vos données propres à votre serveur.
Les fichiers résultants se trouvent dans le dossier rendered.
Dans ce dossier se trouve un fichier nommé talosconfig que vous pouvez copier dans ~/.talos/config.
ATTENTION : NE PAS écraser le fichier ~/.talos/config existant (s’il y en a un).
Si ni le dossier .talos, ni le fichier ~/.talos/config n’existent, alors vous pouvez taper les commandes suivantes :
mkdir ~/.talos
cp rendered/talosconfig ~/.talos/config
Installation sur une machine physique
Déploiement
Une fois ces éléments créés, il suffit d’appliquer la configuration de la manière suivante (dans un terminal sur la machine locale) :
talosctl apply -f rendered/controlplane.yaml -n 192.168.x.y --insecure
où 192.168.x.y est à remplacer par l’adresse IP de votre machine physique (où nous installons Talos Linux).
Cela lancera l’installation des éléments sur Talos. On peut d’ailleurs le voir sur le Dashboard textuel de la machine distante.
Configuration de la commande talosctl
On doit désormais configurer la commande talosctl pour la suite. Tapez les commandes suivantes dans le terminal de votre machine locale :
talosctl config contexts # doit montrer notre cluster nommé 'monServeur'
talosctl config endpoint 192.168.x.y # renseigne le endpoint de 'monServeur'
talosctl config node 192.168.x.y # renseigne le nœud, ici pareil que 'monServeur'
où 192.168.x.y est l’adresse de votre serveur physique.
Installation de Kubernetes
Puis on installe Kubernetes en tapant les commandes dans le terminal de votre machine locale :
talosctl bootstrap
Et voilà, au bout de quelques minutes nous avons un serveur Kubernetes qui tourne !
Configuration d’accès à notre cluster via la commande kubectl
Il reste à ajouter la configuration du cluster Kubernetes à notre commande kubectl locale :
talosctl kubeconfig -n 192.168.x.y
kubectl get nodes # pour vérifier
où 192.168.x.y est l’adresse de votre serveur physique.
Upgrade (mise à jour) de Talos
Voici quelques éléments pour comprendre la mise à jour d’un serveur Talos Linux.
Il faut penser à mettre à jour progressivement :
- de 1.10.5 à 1.10.9 : pour mettre à jour à la dernière version mineure de votre distribution Talos. Dans ce cas précis à la dernière version mineure de la version 1.10 de Talos Linux,
- puis de 1.10.9 à 1.11.6 : pour mettre à jour à la prochaine version mineure maximum de la prochaine version majeure. Ici de 1.10 à 1.11 ; ce qui ramène à la dernière version mineure de la version 1.11,
- et enfin de 1.11.6 à 1.12.2 : dans notre cas, on procède de la même manière que l’étape précédente. De version majeure en version majeure.
Cf. La page de la documentation officielle concernant la gestion du cycle de vie de Talos Linux .
Donc on fait :
talosctl upgrade --nodes 192.168.x.y \
--image ghcr.io/siderolabs/installer:v1.10.9
où 192.168.x.y est l’adresse de votre serveur physique.
Si, pour une raison ou pour une autre, l’état de votre serveur ne serait pas bon après cette mise à jour, vous pouvez revenir en arrière en lançant la commande suivante :
talosctl rollback
Commandes utiles
Liste des extensions
talosctl get extensions