🚀 Déploiement des nœuds K3s#
Dans cette étape, nous allons installer :
- Le nœud master (
control00) avec le rôleserver - Les nœuds workers (
cube00,cube01) avec le rôleagent
Le tout est automatisé via deux playbooks Ansible.
🧠 Pré-requis#
Assurez-vous d’avoir :
- Un inventaire fonctionnel (
hosts.yml) - Les fichiers
group_vars/master.ymletgroup_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)
