Ce module installe l'environnement nécessaire à toute la formation. À la fin, vous aurez un cluster Kubernetes local prêt à recevoir la stack d'observabilité.
Prérequis système
Section intitulée « Prérequis système »Ces valeurs sont celles de la machine hôte, pas du cluster : Minikube y taillera ensuite une VM ou un conteneur. Le poste doit garder de la marge au-delà des 10 Go alloués au cluster, sinon l'hôte se met à swapper dès que l'application de démonstration démarre.
- RAM : 8 Go minimum (16 Go recommandés)
- CPU : 4 cœurs disponibles
- Disque : 20 Go libres
Installation
Section intitulée « Installation »Trois binaires sont nécessaires : kubectl pour parler au cluster, minikube pour le créer, helm pour installer les composants d'observabilité. Sous Linux, ils s'installent en téléchargeant l'archive officielle et sa somme de contrôle, puis en vérifiant l'empreinte avec sha256sum --check avant d'installer quoi que ce soit : c'est ce qui garantit que le binaire posé dans /usr/local/bin est bien celui publié par le projet. Sous macOS et Windows, le gestionnaire de paquets fait cette vérification pour vous.
stable.txt renvoie le numéro de la dernière version stable, réutilisé pour télécharger le binaire et son empreinte. sha256sum --check doit répondre kubectl: Réussi (kubectl: OK en anglais) : si ce n'est pas le cas, arrêtez-vous là.
KUBECTL_VERSION="$(curl -L -s https://dl.k8s.io/release/stable.txt)"curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl"curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl.sha256"echo "$(cat kubectl.sha256) kubectl" | sha256sum --checksudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectlrm kubectl kubectl.sha256kubectl version --clientMinikube
Section intitulée « Minikube »Le fichier .sha256 publié à côté du binaire ne contient que l'empreinte, sans nom de fichier : la commande echo reconstitue le format attendu par sha256sum --check.
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64.sha256echo "$(cat minikube-linux-amd64.sha256) minikube-linux-amd64" | sha256sum --checksudo install minikube-linux-amd64 /usr/local/bin/minikuberm minikube-linux-amd64 minikube-linux-amd64.sha256minikube versionHelm publie une archive et un fichier .sha256sum par version : on vérifie l'archive avant de l'extraire, jamais l'inverse. Adaptez HELM_VERSION si vous visez une autre version que celle utilisée dans cette formation.
HELM_VERSION="v4.1.0"curl -LO "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz"curl -LO "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz.sha256sum"sha256sum --check "helm-${HELM_VERSION}-linux-amd64.tar.gz.sha256sum"tar -xzf "helm-${HELM_VERSION}-linux-amd64.tar.gz"sudo install -o root -g root -m 0755 linux-amd64/helm /usr/local/bin/helmrm -rf linux-amd64 "helm-${HELM_VERSION}-linux-amd64.tar.gz" "helm-${HELM_VERSION}-linux-amd64.tar.gz.sha256sum"helm versionHomebrew vérifie l'empreinte de la formule lors de l'installation, aucune vérification manuelle n'est nécessaire.
brew install kubectlkubectl version --clientMinikube
Section intitulée « Minikube »Sur macOS, Minikube s'appuie par défaut sur Docker Desktop : installez-le avant de lancer le cluster.
brew install minikubeminikube versionhelm version doit renvoyer une version 4.x pour rester aligné avec les commandes de cette formation.
brew install helmhelm versionCes commandes s'exécutent dans un terminal PowerShell ouvert en administrateur, sinon Chocolatey refuse d'écrire dans son répertoire d'installation.
choco install kubernetes-clikubectl version --clientMinikube
Section intitulée « Minikube »Le paquet installe le binaire mais pas d'hyperviseur : Docker Desktop ou Hyper-V doit être opérationnel avant le premier minikube start.
choco install minikubeminikube versionLe paquet Chocolatey s'appelle kubernetes-helm, pas helm.
choco install kubernetes-helmhelm versionVérification automatique
Section intitulée « Vérification automatique »Si vous avez cloné le dépôt, utilisez le script de vérification :
git clone https://github.com/stephrobert/lab-observability.gitcd lab-observabilitychmod +x 00-setup/verify.sh./00-setup/verify.shSortie attendue :
=== Vérification des prérequis ===
✅ minikube : minikube version: v1.37.0✅ kubectl : error: unknown flag: --short✅ helm : v4.1.0+g4553a0a✅ docker : Docker version 29.1.3, build f52814d
=== Vérification des ressources ===✅ RAM : 46 Go disponibles
✅ Tous les prérequis sont satisfaits !
Prochaine étape : minikube start --memory=10240 --cpus=4 --driver=dockerDémarrer Minikube
Section intitulée « Démarrer Minikube »Créez votre cluster avec suffisamment de ressources pour la formation. Les valeurs passées ici sont figées à la création : changer --memory ou --cpus plus tard suppose de détruire le cluster avec minikube delete puis de le recréer. Le premier démarrage télécharge l'image de base et prend plusieurs minutes ; les suivants sont bien plus rapides. --kubernetes-version fige la version du cluster pour que les sorties des modules suivants correspondent aux vôtres.
minikube start \ --memory=10240 \ --cpus=4 \ --driver=docker \ --kubernetes-version=v1.32.0Vérifiez que le cluster fonctionne :
kubectl cluster-infokubectl get nodesSortie attendue :
Kubernetes control plane is running at https://192.168.49.2:8443CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
NAME STATUS ROLES AGE VERSIONminikube Ready control-plane 2m14s v1.32.0Configurer les addons utiles
Section intitulée « Configurer les addons utiles »Les addons Minikube sont des composants préconfigurés que le cluster déploie à la demande. metrics-server est le seul réellement indispensable ici : sans lui, kubectl top répond Metrics API not available et vous ne pourrez pas comparer les mesures de la stack d'observabilité avec celles de Kubernetes. Chaque activation crée des pods dans kube-system, comptez quelques dizaines de secondes avant qu'ils soient Running.
# Metrics server (pour kubectl top)minikube addons enable metrics-server
# Dashboard Kubernetes (optionnel)minikube addons enable dashboard
# Ingress (pour exposer les services)minikube addons enable ingressVérifiez les addons actifs :
minikube addons list | grep enabledAjouter les repos Helm
Section intitulée « Ajouter les repos Helm »Un repository Helm est un index de charts hébergé en HTTP ; Helm ne connaît que ceux que vous déclarez localement. Ces trois dépôts couvrent l'ensemble des composants installés dans la formation. helm repo update est obligatoire après un add : sans lui, l'index local reste vide et les helm install échouent avec chart not found.
# Prometheus Community (Prometheus, Alertmanager)helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
# Grafana (Grafana, Loki, Tempo)helm repo add grafana-community https://grafana-community.github.io/helm-charts
# OpenTelemetryhelm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
# Mettre à jour les reposhelm repo updateVérifiez :
helm repo listCréer les namespaces
Section intitulée « Créer les namespaces »Séparer les outils d'observabilité de l'application observée facilite le nettoyage : un kubectl delete namespace otel-demo retire toute la démo sans toucher à Prometheus ni Grafana. Ces deux namespaces sont utilisés tels quels par les modules suivants, gardez ces noms exacts. La suppression d'un namespace supprime tout ce qu'il contient, y compris les volumes persistants qui y sont rattachés.
# Namespace pour les outils d'observabilitékubectl create namespace observability
# Namespace pour l'application démokubectl create namespace otel-demoVérifiez :
kubectl get namespacesCommandes utiles à retenir
Section intitulée « Commandes utiles à retenir »Ces six commandes couvrent le cycle de vie du cluster pendant toute la formation. Retenez surtout la différence entre minikube stop, qui éteint la VM en conservant l'état, et minikube delete, qui détruit tout : cluster, namespaces, releases Helm et données. minikube tunnel doit rester ouvert dans un terminal tant que vous avez besoin des adresses de type LoadBalancer.
| Commande | Description |
|---|---|
minikube start | Démarrer le cluster |
minikube stop | Arrêter (sans perdre les données) |
minikube delete | Supprimer (reset complet) |
minikube dashboard | Ouvrir le dashboard K8s |
minikube service <svc> -n <ns> | Ouvrir un service dans le navigateur |
minikube tunnel | Exposer les LoadBalancer |
Dépannage
Section intitulée « Dépannage »Les trois erreurs ci-dessous couvrent la quasi-totalité des échecs de mise en route. Elles ont un point commun : le message porte sur Minikube ou kubectl, alors que la cause se trouve en dessous, dans les ressources de l'hôte ou dans le démon Docker. Vérifiez toujours cette couche avant de recréer le cluster.
"Not enough memory"
Section intitulée « "Not enough memory" »Réduisez la mémoire allouée (minimum 4 Go, mais 8 Go recommandés) :
minikube deleteminikube start --memory=4096 --cpus=2"Driver docker not found"
Section intitulée « "Driver docker not found" »Vérifiez que Docker est démarré :
docker psSi Docker tourne mais Minikube ne le trouve pas, ajoutez votre utilisateur au groupe docker :
sudo usermod -aG docker $USERnewgrp docker"kubectl connection refused"
Section intitulée « "kubectl connection refused" »Le cluster n'est pas démarré ou le contexte n'est pas bon :
minikube startkubectl config use-context minikubeValidation
Section intitulée « Validation »Avant de passer au module suivant, vérifiez que tout fonctionne. Les trois commandes doivent réussir dans l'ordre : un nœud Ready, deux namespaces Active, et trois dépôts Helm listés. Un échec sur la dernière signifie généralement qu'un helm repo add a été saisi dans un autre shell ou sous un autre utilisateur, la configuration Helm étant stockée dans le répertoire personnel.
# Cluster actifkubectl get nodes
# Namespaces crééskubectl get ns observability otel-demo
# Repos Helm configuréshelm repo list | grep -E "prometheus|grafana|open-telemetry"Si tout est vert, vous êtes prêt pour le module suivant.