Skip to content

Latest commit

 

History

History
93 lines (70 loc) · 3.59 KB

File metadata and controls

93 lines (70 loc) · 3.59 KB

🥾 Bootstrap — provisionnement des VMs

Le provisionnement est découpé en modules pour qu'une VM n'installe que ce dont le TP a besoin. Le point d'entrée est ../bootstrap.sh, qui exécute toujours base.sh puis le module correspondant au profil demandé.

📦 Les profils

Profil Modules exécutés Contenu Pour quels TPs
base (défaut) base.sh DNS, outils, /etc/hosts, swap off, clients iSCSI / NFS / GlusterFS Linux, Ansible, serveur NFS
docker base.sh + docker.sh Docker CE, Buildx, Compose v2 Docker, Docker Swarm
kubeadm base.sh + kubeadm.sh containerd, crictl, kubelet / kubeadm / kubectl Kubernetes niveau 2

⚠️ docker et kubeadm s'excluent. Les deux profils configurent containerd, mais pas de la même façon : Docker impose sa propre configuration /etc/containerd/config.toml, incompatible avec le SystemdCgroup attendu par kubelet.

ℹ️ Le profil kubeadm ne lance ni kubeadm init ni kubeadm join. Le bootstrap du plan de contrôle et l'ajout des nœuds restent des étapes pédagogiques manuelles, décrites dans k8s/niveau2/01-Installation-Kubeadm.md.

🚀 Utilisation

# Toutes les VMs avec le même profil
LAB_PROFILE=kubeadm vagrant up

# Reprovisionner sans recréer les VMs
LAB_PROFILE=docker vagrant provision

# Une seule VM
LAB_PROFILE=kubeadm vagrant up box01

Pour un profil différent par machine, ajoutez la clé :profile dans le tableau servers du Vagrantfile :

{ :hostname => "nfs-server", :ip => "192.168.56.50", :profile => "base", ... }

Les scripts sont également exécutables à la main dans une VM déjà démarrée :

vagrant ssh box01
sudo bash /vagrant/bootstrap.sh kubeadm

⚙️ Variables d'environnement

Variable Défaut Effet
LAB_PROFILE base Profil de provisionnement
LAB_REGISTRY_MIRROR https://reg.ntl.nc/v2/proxy Cache de registry (Harbor). Mettre à "" pour tirer directement depuis Docker Hub
LAB_K8S_MINOR v1.34 Version mineure des paquets Kubernetes
LAB_CRICTL_VERSION v1.36.0 Version de crictl
LAB_PAUSE_IMAGE registry.k8s.io/pause:3.10.2 Image sandbox de containerd (doit correspondre à celle attendue par kubeadm)

Exemple hors réseau interne, sans cache Harbor :

LAB_REGISTRY_MIRROR="" LAB_PROFILE=kubeadm vagrant up

🗂️ Détail des modules

base.sh

Résolveurs DNS publics, paquets de base (curl, git, vim, jq, htop, tree, conntrack), clients de stockage (open-iscsi, nfs-common, glusterfs-server), entrées /etc/hosts pour box01box04 et nfs-server, désactivation du swap, et miroir de registry k3s dans /etc/rancher/k3s/registries.yaml.

Les entrées /etc/hosts sont encadrées par des marqueurs, le script est donc idempotent.

docker.sh

Dépôt Docker officiel, installation de docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin et docker-compose-plugin, rotation des logs conteneurs, ajout de l'utilisateur vagrant au groupe docker.

Le cache Harbor du lab est un proxy project : il s'utilise en préfixant l'image (reg.ntl.nc/proxy/nginx:latest) et non via registry-mirrors, qui n'accepte pas de préfixe de chemin.

kubeadm.sh

Modules noyau overlay / br_netfilter, sysctl CRI, containerd en SystemdCgroup avec miroir docker.io, crictl, puis kubelet / kubeadm / kubectl épinglés via apt-mark hold. Installe aussi l'alias k=kubectl et la complétion Bash.