Aller au contenu principal

Installation Controle Plane K3s

Logo Loutik


Métadonnées
  • Mainteneur(s) : MEDO Louis
  • Dernière validation technique : 2026-01-11
  • Version K3s : Stable

Contexte

Cette procédure détaille l'installation complète du nœud Master (Control Plane) pour l'infrastructure LoutikCloud. Elle inclut la préparation du noyau Linux, l'installation de K3s, la sécurisation du nœud (Taints), l'installation du gestionnaire de paquets HELM et de l'outil de mise à jour Keel.


Prérequis

Avant de commencer, s'assurer de :

  • Avoir une VM Debian/Ubuntu fraîchement installée avec IP statique.
  • Être connecté en sudo.
  • Avoir défini les noms d'hôtes (ex: k3s-m-prod-01).

Étape 1 : Préparation Système (Obligatoire)

K3s nécessite une configuration spécifique du noyau et la désactivation du Swap pour fonctionner correctement.

1.1 Désactivation du Swap

Kubernetes ne gère pas la mémoire swap. Il faut la désactiver.

# Désactivation immédiate
sudo swapoff -a

# Désactivation permanente (au redémarrage)
sudo sed -i '/ swap / s/^/#/' /etc/fstab

Vérification : Exécuter free -h. La colonne Swap doit afficher 0.

1.2 IP Forwarding & Modules Kernel

Autoriser les communications réseaux entre les conteneurs (Bridges).

cat <<EOF | sudo tee /etc/sysctl.d/k3s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

# Appliquer les changements
sudo sysctl --system

1.3 Installation des outils de base

Installation de git pour récupérer les configurations futures.

sudo apt update && sudo apt install git -y


Étape 2 : Installation du Master (Control Plane)

2.1 Installation du service K3s

curl -sfL [https://get.k3s.io](https://get.k3s.io) | sh -

Ce script installe l'API Kubernetes, la base de données SQLite et Traefik par défaut.

2.2 Sauvegarde du Token

Ce jeton est indispensable pour joindre les Workers au cluster.

sudo cat /var/lib/rancher/k3s/server/node-token

Action : Copier la chaîne affichée et la stocker dans Bitwarden.

2.3 Configuration des droits Kubectl (Local)

Pour utiliser kubectl et helm sans sudo avec l'utilisateur courant :

# 1. Créer le dossier de config
mkdir -p ~/.kube

# 2. Copier la config admin
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config

# 3. Donner les droits à l'utilisateur courant
sudo chown $(id -u):$(id -g) ~/.kube/config

# 4. Sécuriser le fichier (lecture seule pour le propriétaire)
chmod 600 ~/.kube/config


Étape 3 : Configuration & Sécurisation du Nœud

3.1 Protection du Master (Taint)

Pour éviter que des applications utilisateurs (Pods) ne se lancent sur le serveur maître (réservé aux services critiques).

# Syntaxe : kubectl taint nodes <NOM_NODE> Key=Value:Effect
sudo kubectl taint nodes k3s-m-prod-01 CriticalAddonsOnly=true:NoExecute

3.2 Étiquetage pour le stockage (Label)

Définir les nœuds qui accueilleront les volumes persistants (Longhorn/Local). Cela empêche un pod avec des données de se déplacer sur un nœud qui n'a pas le disque.

À faire une fois les workers connectés, ou préventivement :

kubectl label nodes k3s-w-prod-01 stockage=persistant01
kubectl label nodes k3s-w-prod-02 stockage=persistant02


Étape 4 : Installation de HELM

Helm est le gestionnaire de paquets pour Kubernetes (équivalent d'APT).

4.1 Installation des dépôts et du paquet

sudo apt-get install curl gpg apt-transport-https --yes

# Ajout de la clé GPG
curl -fsSL [https://packages.buildkite.com/helm-linux/helm-debian/gpgkey](https://packages.buildkite.com/helm-linux/helm-debian/gpgkey) | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null

# Ajout du dépôt
echo "deb [signed-by=/usr/share/keyrings/helm.gpg] [https://packages.buildkite.com/helm-linux/helm-debian/any/](https://packages.buildkite.com/helm-linux/helm-debian/any/) any main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list

# Installation
sudo apt-get update
sudo apt-get install helm


Étape 5 : Installation de Keel

Keel est un "Watcher" qui met à jour automatiquement les conteneurs quand une nouvelle image Docker est disponible.

5.1 Préparation Helm

# Ajout du repo Keel
helm repo add keel [https://charts.keel.sh](https://charts.keel.sh)
helm repo update

5.2 Configuration (Values)

Créer le fichier de configuration spécifique :

mkdir -p ~/k3s/keel && cd ~/k3s/keel
nano keel-values.yaml

Coller le contenu suivant :

# Configuration Keel pour LoutikCloud
helmProvider:
enabled: false # On gère via fichiers YAML natifs
service:
enabled: false # Pas d'interface web exposée
polling:
enabled: true # Vérifie régulièrement les nouvelles images

5.3 Déploiement

# 1. Création du namespace système
sudo kubectl create namespace keel-system

# 2. Installation via Helm
helm upgrade --install keel keel/keel --namespace keel-system -f keel-values.yaml

Vérification :

sudo kubectl get pods -n keel-system -o wide


Annexe : Accès Distant (Optionnel)

Si vous souhaitez piloter le cluster depuis votre PC personnel.

  1. Sur le serveur : sudo cat /etc/rancher/k3s/k3s.yaml
  2. Copier le contenu.
  3. Sur ton PC : Coller dans ~/.kube/config.
  4. Remplacer server: https://127.0.0.1:6443 par l'IP du Master (ex: https://192.168.1.201:6443).

Références