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é)

  1. Nouvelle machine → Type Linux → Ubuntu (64-bit).
  2. RAM : 4 Go, disque : 20 Go.
  3. Téléchargez Ubuntu Server 24.04 LTS (https://ubuntu.com/download/server), installez-le normalement.
  4. Réseau : Adaptateur en NAT (accès Internet) ; un second adaptateur host-only est optionnel si vous voulez exposer kubectl depuis le poste hôte.

3. Installation de Docker

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker

4. 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: worker
kind create cluster --config kind-config.yaml --name netsecdevops-lab

6. Installation de Calico (CNI supportant les NetworkPolicy)

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml

Attendez que tous les pods soient Running :

kubectl get pods -n kube-system --watch

7. Installation du client Python Kubernetes (pour l’étape 5 du TP)

pip install kubernetes

Le fichier ~/.kube/config, généré automatiquement par kind, sera utilisé par config.load_kube_config().

Vérification finale

  • kubectl get nodes affiche control-plane et worker en état Ready.
  • Tous les pods calico-* de kube-system sont Running.
  • kubectl run test --image=nginx --rm -it --command -- curl -s ifconfig.me confirme l’accès réseau des pods.