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

Bootstrap du cluster K3s - Préparation

·Temps de lecture : 3 minutes· loading · loading · ·
ksh2177
K3s Ansible Bootstrap Homelab GitOps Infrastructure Raspberry Pi
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

📝 Bootstrap du cluster K3s
#

🗂️ 1. Création du dépôt homelab-k3s
#

Ce dépôt contient tous les fichiers Ansible nécessaires pour provisionner automatiquement un cluster K3s depuis zéro, avec :

  • Le control plane (control00)
  • Les workers (cube00, cube01)
  • Le déploiement d’Argo CD via Helm
  • Le bootstrap du manifeste App-of-Apps

🏗️ Structure cible
#

À la racine du dépôt :

homelab-k3s/
└── ansible/
    ├── inventory/
    │   └── hosts.yml
    ├── group_vars/
    │   ├── master.yml
    │   └── workers.yml
    ├── playbooks/
    │   ├── k3s_master.yml
    │   ├── k3s_workers.yml
    │   └── install_argocd.yml
    └── requirements.yml

🧱 2. Création du fichier inventory/hosts.yml
#

📍 Chemin : ansible/inventory/hosts.yml

Ce fichier définit les hôtes du cluster (control plane + workers), accessibles en SSH.

---
all:
  hosts:
    control00:
      ansible_host: 192.168.1.21
      ansible_user: root

    cube00:
      ansible_host: 192.168.1.42
      ansible_user: root

    cube01:
      ansible_host: 192.168.1.77
      ansible_user: root

  children:
    master:
      hosts:
        control00:

    workers:
      hosts:
        cube00:
        cube01:

À faire :

  • Crée le dossier ansible/inventory/ s’il n’existe pas
  • Crée le fichier hosts.yml et colle ce contenu
  • Vérifie que les adresses IP et utilisateurs SSH sont bons
  • Teste ta connexion SSH vers chaque machine (ssh root@192.168.1.X)

🧪 Test rapide avec Ansible :

Depuis ansible/, exécute :

ansible -i inventory/hosts.yml all -m ping
cube00 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
cube01 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
control00 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Si tout est bien configuré, tu devrais avoir un pong pour chaque hôte.


⚙️ 3. Variables Ansible
#

Dans cette étape, on définit les variables spécifiques aux groupes d’hôtes master et workers du cluster.

📄 Fichier master.yml
#

📍 Chemin : ansible/group_vars/master.yml

---
k3s_token: "Votre_Token_ICI"
k3s_server_ip: "192.168.1.21"
k3s_version: "v1.29.3+k3s1"
k3s_install_url: "https://get.k3s.io"
kubeconfig_path: "/etc/rancher/k3s/k3s.yaml"

🔐 Remplace Votre_Token_ICI par un token sécurisé.

🧠 Ce fichier contient :

  • Le token de jonction du cluster
  • L’IP du nœud master
  • L’URL d’installation de K3s
  • Le chemin du kubeconfig utilisé par Argo CD

📄 Fichier workers.yml
#

📍 Chemin : ansible/group_vars/workers.yml

---
k3s_token: "Votre_Token_ICI"
k3s_version: "v1.29.3+k3s1"
k3s_server_ip: "192.168.1.21"
k3s_install_url: "https://get.k3s.io"

🎯 Ces variables permettent à chaque worker de rejoindre le cluster en se connectant à l’API du master (control00).


À faire :

  • Crée le dossier ansible/group_vars/ s’il n’existe pas
  • Ajoute les deux fichiers .yml
  • Renseigne correctement l’adresse IP et le token

🧪 Test de bonne reconnaissance des variables :

Lance ce playbook de debug pour t’assurer que les variables sont bien prises :

ansible -i inventory/hosts.yml master -m debug -a "var=k3s_server_ip"
control00 | SUCCESS => {
    "k3s_server_ip": "192.168.1.21"
}

Tu dois voir l’IP 192.168.1.21 s’afficher.


📦 4. Dépendances Ansible
#

Certaines tâches (ex: installation d’Argo CD via Helm) nécessitent des collections Ansible externes.

📄 Fichier requirements.yml
#

📍 Chemin : ansible/requirements.yml

---
collections:
- name: kubernetes.core
- name: community.kubernetes

💡 Ces collections permettent à Ansible :

  • De manipuler des objets Kubernetes (kubernetes.core.k8s)
  • D’utiliser Helm (kubernetes.core.helm)

📥 Installation des collections
#

Depuis le dossier ansible/, lance :

ansible-galaxy collection install -r requirements.yml
Starting galaxy collection install process
Process install dependency map
Starting collection install process
Skipping 'kubernetes.core' as it is already installed
Skipping 'community.kubernetes' as it is already installed

Cela télécharge et installe automatiquement les collections nécessaires.


🧪 Test rapide :

Tu peux vérifier qu’elles sont bien disponibles avec :

ansible-doc -t module kubernetes.core.k8s=

Si la doc du module s’affiche, c’est bon ✅


🛠️ Tu es maintenant prêt à déployer K3s avec Ansible !

Rendez-vous à l’étape suivante pour le playbook de déploiement du nœud master.

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.
Déploiement des nœuds K3s avec Ansible
·Temps de lecture : 2 minutes· loading · loading
ksh2177
K3s Ansible Playbook Cluster Automation Raspberry Pi DevOps
Installer automatiquement le nœud master et les nœuds workers dans un cluster K3s à l’aide de playbooks Ansible personnalisés.
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.
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.
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.
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.
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.