Dans un monde numérique en constante évolution, les infrastructures SaaS s’imposent comme la base des services agiles, sécurisés et évolutifs. Elles permettent aux entreprises de se concentrer sur l’innovation sans se soucier des contraintes matérielles. Ce guide vous montre comment bâtir une telle infrastructure avec Proxmox, Kubernetes et Talos Linux

Objectif : une plateforme robuste, automatisée et prête pour le déploiement à grande échelle.

L'Importance d'une Infrastructure SaaS (Software as a Service)

L'infrastructure SaaS (Software as a Service) est devenue essentielle pour les entreprises modernes.

Voici pourquoi :

  1. Scalabilité: Permet de s’adapter rapidement aux besoins changeants sans investissements lourds en matériel.
  2. Réduction des coûts: Élimine le besoin de maintenance de serveurs internes et de logiciels, permettant de concentrer les ressources sur des tâches stratégiques.
  3. Accès et disponibilité: Accessibles à tout moment, de n’importe où via Internet, facilitant le travail à distance et la collaboration.
  4. Sécurité et conformité: Les fournisseurs SaaS investissent dans des mesures de sécurité avancées et respectent les normes de conformité.
  5. Innovation continue: Automatise les mises à jour logicielles, assurant toujours l’utilisation des outils les plus récents et performants.
  6. Gestion des ressources: Libère le temps des équipes informatiques pour des projets stratégiques en externalisant la gestion de l’infrastructure.
  7. Intégration: Facilite l’automatisation des processus grâce à une intégration fluide avec d'autres outils.

 

 

1. Introduction à Proxmox, Kubernetes et Talos Linux

Proxmox est une plateforme de virtualisation open-source qui permet de gérer des machines virtuelles (VMs) et des conteneurs (LXC) sur un seul et même espace de gestion. 

Kubernetes est une plateforme de gestion de conteneurs qui automatise le déploiement, la mise à l'échelle et la gestion des applications conteneurisées.

Talos Linux est un OS minimaliste conçu spécifiquement pour exécuter Kubernetes, offrant une sécurité renforcée et une gestion simplifiée.

 

2. Prérequis

avant de commencer, assurez-vous d'avoir :

  • Une instance ou un cluster Proxmox installé et configuré.
  • Un accès root ou sudo sur cette instance Proxmox.
  • Un nom de domaine associé pour votre service
  • Une connaissance de base de Kubernetes et Docker.
 

3. Étape 1: Préparer Proxmox

  1. Accédez à votre tableau de bord Proxmox.
  2. Créez une machine de rebond
    Un container lxc Debian12 pourra faire l'affaire
    On y installe les outils de gestion du cluster Kubernetes/Talos

    # wget https://github.com/siderolabs/talos/releases/download/v1.10.3/talosctl-linux-amd64
    # mv talosctl-linux-amd64 /usr/local/bin/talosctl && chmod +x /usr/local/bin/talosctl
    # apt install kubernetes-client


    Ces éléments nous permettront de configurer les cluster et de l'administrer par la suite

  3. Téléchargez l'image ISO de Talos Linux depuis le repo officiel ici.




  4. On télécharge l'ISO metal-amd64.iso sur notre serveur Proxmox



  5. Créez une nouvelle VM Talos:
    • Allez dans "Create VM".
    • Utilisez l'image ISO de Talos Linux comme disque de démarrage.
    • Allouez les ressources nécessaires (4 CPU, 4 Go de Ram, 20 Go de disque).
    • Démarrez la VM.
      Cette VM pourra être après configuration être un controler k8s ou un worker
 

4. Étape 2: Installer Talos Linux

  1. Connectez-vous à la VM Talos via la console Proxmox




  2. Configurer Talos en utilisant les commandes indiquées dans la fenêtre.
    F3 permet de configurer le réseau et le serveur DNS
    Vous devez être dans le même plan réseau que votre machine d'admin que l'on a configuré plus tôt.

  3. Depuis la machine d'admin précédemment configuré, on va configuré notre nouveau serveur en tant que controler kubernetes

    # export CONTROL_PLANE_IP=192.168.100.10    (192.168.100.10 est l'ip de ma machine Talos)
    # talosctl gen config talos-proxmox-cluster https://$CONTROL_PLANE_IP:6443 --output-dir _out




  4. Ici la commande créé le répertoire _out et y génère les fichiers de configuration

    # cd _out
    # talosctl apply-config --insecure --nodes $CONTROL_PLANE_IP --file controlplane.yaml

    Le fichier controlplane.yaml contient les paramètres de votre controler.
    Initialement, la configuration est correct pour notre test, mais vous pouvez l'adapter à votre besoin.
    Le "Stage" dans la console Proxmox va passer de "Maintenance" à "Booting"

  5. Bootstrap le cluster Kubernetes
    Pour cela, on applique une série de commande qui vont permet l'initialisation du controler:

    # export TALOSCONFIG="talosconfig"
    # talosctl config endpoint $CONTROL_PLANE_IP
    # talosctl config node $CONTROL_PLANE_IP
    # talosctl bootstrap


    Si tout se passe bien, vous devriez voir le controler qui passe en mode "Running"



  6. Initialisation du controler Kubernetes

    # talosctl kubeconfig .
    # export KUBECONFIG=kubeconfig

    Au bout de quelques secondes, vous devriez vous apparaitre votre node k8s

    # kubectl get nodes
    NAME              STATUS   ROLES           AGE   VERSION
    hades-control-1   Ready    control-plane   66s   v1.33.1


  7. Ajouter les workers
    On recommence les mêmes étapes en définissant un worker à la place du controler



    Vous configurez le nom d'hote, l'ip, le dns et le serveur ntp


root@hades:~/_out# export WORKER_IP=192.168.100.21
root@hades:~/_out# talosctl apply-config --insecure --nodes $WORKER_IP --file worker.yaml




root@hades:~/_out# export KUBECONFIG=kubeconfig
root@hades:~/_out# kubectl get nodes
NAME              STATUS   ROLES           AGE     VERSION
hades-control-1   Ready    control-plane   7d2h    v1.33.1
hades-workers-1   Ready    <none>          3m48s   v1.33.1

Votre cluster kubernetes est maintenat prêt 

L'installation avec Talos va vous permettre de créer votre infrastructure SaaS à la carte
Avec de l'automatisation comme Ansible, Terraform ou OpenTofu, vous allez pouvoir déployer as code 



Bon ok j'ai fait une faute de frappe dans le nom des machines ....
Mais c'est pour le coté humain du tuto 😂