Environnement du TP 18 : Cluster Kubernetes local (kind + Calico)
Hyperviseur recommandé : VirtualBox (une seule VM), ou installation directe sur le poste hôte si Docker Desktop y est déjà disponible.
1. Prérequis matériels
- 4 Go de RAM, 2 vCPU, 20 Go de disque (VM dédiée recommandée pour isoler l’environnement),
- un accès Internet (téléchargement des images de conteneurs).
2. Création de la VM (si environnement isolé souhaité)
- Nouvelle machine → Type Linux → Ubuntu (64-bit).
- RAM : 4 Go, disque : 20 Go.
- Téléchargez Ubuntu Server 24.04 LTS (
https://ubuntu.com/download/server), installez-le normalement. - Réseau : Adaptateur en NAT (accès Internet) ; un second adaptateur host-only est optionnel si vous voulez exposer
kubectldepuis le poste hôte.
3. Installation de Docker
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker4. Installation de kind et kubectl
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64
chmod +x ./kind && sudo mv ./kind /usr/local/bin/kind
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/5. Création du cluster sans le CNI par défaut
Le CNI par défaut de kind (kindnet) n’applique pas les NetworkPolicy. Créez le cluster en le désactivant :
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
disableDefaultCNI: true
nodes:
- role: control-plane
- role: workerkind create cluster --config kind-config.yaml --name netsecdevops-lab6. Installation de Calico (CNI supportant les NetworkPolicy)
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yamlAttendez que tous les pods soient Running :
kubectl get pods -n kube-system --watch7. Installation du client Python Kubernetes (pour l’étape 5 du TP)
pip install kubernetesLe fichier ~/.kube/config, généré automatiquement par kind, sera utilisé par config.load_kube_config().
Vérification finale
-
kubectl get nodesaffichecontrol-planeetworkeren étatReady. - Tous les pods
calico-*dekube-systemsontRunning. -
kubectl run test --image=nginx --rm -it --command -- curl -s ifconfig.meconfirme l’accès réseau des pods.