Aller au contenu
  1. Docs/
  2. K3s Kubernetes/

Déploiement des nœuds K3s avec Ansible

·Temps de lecture : 2 minutes· loading · loading · ·
ksh2177
K3s Ansible Playbook Cluster Automation Raspberry Pi DevOps
ksh2177
Auteur
ksh2177
Ingénieur DevOps passionné par l’automatisation, la fiabilité et le design système.
Auteur
ksh2177
Ingénieur DevOps passionné par l’automatisation, la fiabilité et le design système. J’apporte des solutions robustes et bien pensées.
Table des matières

🚀 Déploiement des nœuds K3s
#

Dans cette étape, nous allons installer :

  • Le nœud master (control00) avec le rôle server
  • Les nœuds workers (cube00, cube01) avec le rôle agent

Le tout est automatisé via deux playbooks Ansible.


🧠 Pré-requis
#

Assurez-vous d’avoir :

  • Un inventaire fonctionnel (hosts.yml)
  • Les fichiers group_vars/master.yml et group_vars/workers.yml
  • Les collections Ansible installées via requirements.yml

📄 Playbook k3s_master.yml
#

📍 Chemin : ansible/playbooks/k3s_master.yml

---
- name: Install K3s on control-plane
  hosts: master
  become: true
  vars_files:
    - ../group_vars/master.yml

  tasks:
    - name: Install K3s (server)
      shell: >
        INSTALL_K3S_VERSION={{ k3s_version }}
        curl -sfL {{ k3s_install_url }} | sh -s -
        --write-kubeconfig-mode 644
        --disable servicelb
        --disable-cloud-controller
        --disable local-storage
        --disable traefik
        --token {{ k3s_token }}
        --node-taint CriticalAddonsOnly=true:NoExecute
        --bind-address {{ k3s_server_ip }}
      args:
        executable: /bin/bash

ici on désactive plusieurs fonctionnalités comme service lb, local-storage ou encore traefik.

Nous installerons ensuites d’autres outils pour les remplacer comme:

  • MetalLb
  • Longhorn
  • Nginx Ingress Controller

Nous ajoutons également l’argument --node-taint afin qu’aucun pod ne tourne sur le control-plane


📄 Playbook k3s_workers.yml
#

📍 Chemin : ansible/playbooks/k3s_workers.yml

---
- name: Join workers to K3s cluster
  hosts: workers
  become: true
  vars_files:
    - ../group_vars/workers.yml

  tasks:
    - name: Install K3s (agent)
      shell: |
        INSTALL_K3S_VERSION={{ k3s_version }}
        curl -sfL {{ k3s_install_url }} | K3S_URL=https://{{ k3s_server_ip }}:6443           K3S_TOKEN={{ k3s_token }} sh -
      args:
        executable: /bin/bash

▶️ Lancement des playbooks
#

Depuis le dossier ansible/playbooks/, exécute dans cet ordre :

ansible-playbook -i ../inventory/hosts.yml k3s_master.yml
ansible-playbook -i ../inventory/hosts.yml k3s_workers.yml

🧪 Vérification du cluster :

Sur ton poste ou via SSH sur le master :

kubectl get nodes

Tu devrais voir quelque chose comme :

NAME        STATUS   ROLES                  AGE   VERSION
control00   Ready    control-plane,master   1m    v1.29.3+k3s1
cube00      Ready    <none>                 30s   v1.29.3+k3s1
cube01      Ready    <none>                 29s   v1.29.3+k3s1

🟢 Tu as maintenant un cluster K3s fonctionnel et prêt à accueillir Argo CD 🎉

🎁 Configuration du cluster
#

Maintenant que nous avons mis en place le cluster, nous allons configurer certaines choses:

🏷️ Labels
#

# Label de rôle standard
kubectl label node cube00 node-role.kubernetes.io/worker=""
kubectl label node cube01 node-role.kubernetes.io/worker=""

# Label custom
kubectl label node cube00 node-type=worker
kubectl label node cube01 node-type=worker

🛠️ Context
#

Depuis control00, ou mieux encore depuis ta machine POP!_OS (si tu as copié le kubeconfig), exécute :

kubectl config rename-context default prod 
kubectl config use-context prod

➡️ Cela renommera le contexte default en prod dans ton ~/.kube/config
(ou le --kubeconfig=/etc/rancher/k3s/k3s.yaml si tu bosses encore en root)

Articles connexes

Design goal
·Temps de lecture : 2 minutes· loading · loading
ksh2177
K3s Kubernetes Ansible Raspberry Pi Homelab SSH Automation Cluster Infra-as-Code
Préparation des nœuds Raspberry Pi avant le déploiement du cluster K3s : réseau, SSH, Ansible et inventaire automatisé.
Storage settings
·Temps de lecture : 9 minutes· loading · loading
ksh2177
K3s Kubernetes Storage Longhorn Ansible Raspberry Pi PersistentVolume DevOps Homelab
Choix, préparation et installation de Longhorn comme solution de stockage persistant Kubernetes pour K3s sur Raspberry Pi, avec montage automatique via Ansible.
Bootstrap du cluster K3s - Préparation
·Temps de lecture : 3 minutes· loading · loading
ksh2177
K3s Ansible Bootstrap Homelab GitOps Infrastructure Raspberry Pi
Initialisation du dépôt homelab-k3s et création de l’inventaire Ansible pour les nœuds du cluster.
Matériel
·Temps de lecture : 2 minutes· loading · loading
ksh2177
K3s Kubernetes Raspberry Pi Homelab Hardware Cluster Storage Network
Liste complète du matériel utilisé pour construire un cluster K3s sur Raspberry Pi : compute, stockage, réseau et tests de performance.
Conf noeuds
·Temps de lecture : 3 minutes· loading · loading
ksh2177
K3s Kubernetes Ansible Raspberry Pi Homelab SSH Inventory Automation DevOps
Préparer les nœuds Raspberry Pi pour le cluster K3s : connectivité, SSH sans mot de passe, configuration d’Ansible et inventaire dynamique.
Installation d’Argo CD avec Ansible
·Temps de lecture : 4 minutes· loading · loading
ksh2177
Argo CD Kubernetes Helm GitOps Ansible DevOps K3s Homelab
Déployer Argo CD dans le cluster K3s à l’aide d’un playbook Ansible Helm complet et idempotent.
Os settings
·Temps de lecture : 1 minutes· loading · loading
ksh2177
K3s Kubernetes DietPi Linux OS Iptables Ansible Homelab DevOps
Réglages système post-installation pour DietPi : mise à jour de l’OS, configuration réseau, iptables et préparation à Kubernetes.
Déploiement Home Assistant (GitOps)
·Temps de lecture : 7 minutes· loading · loading
ksh2177
GitOps Argo CD Kubernetes App-of-Apps DevOps Homelab K3s Helm Sealed Domotique
Création d’un chart Helm minimal, overlay Kustomize, secret chiffré et déclaration Argo CD pour Home Assistant.
Structure GitOps et App-of-Apps
·Temps de lecture : 2 minutes· loading · loading
ksh2177
GitOps Argo CD Kubernetes App-of-Apps DevOps Homelab K3s
Organisation du dépôt GitOps et déclaration du manifeste App-of-Apps dans Argo CD pour gérer les applications.