Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Le lab Kubernetes local de la formation Observabilité

  • 15 min

Par mis à jour le

Améliorer cette page

Le lab de la formation Observabilité est un cluster Kubernetes local, Minikube, sur lequel tourne une vraie application à observer. Les leçons de pratique y installent une à une Prometheus, Grafana, Alertmanager et Loki, autour de l'OpenTelemetry Demo, un site e-commerce d'une vingtaine de microservices. Cette page présente ce lab avant que vous n'installiez quoi que ce soit : la machine qu'il demande, l'architecture de la stack, l'application observée, le dépôt Git qui porte les fichiers de configuration et l'accès aux interfaces. L'installation elle-même se fait dans la leçon Installer Minikube, Helm et kubectl, après une leçon de concepts sur ce qui sépare l'observabilité du monitoring.

  • Situer chaque brique de la stack dans le trajet d'un signal
  • Vérifier que votre machine peut porter le lab
  • Cloner le dépôt du lab et y retrouver les values Helm d'une leçon
  • Accéder aux interfaces du lab par leur NodePort

Six leçons se jouent sur le cluster, et elles gardent la numérotation du dépôt, de 00 à 05 : l'installation, l'application de démonstration, Prometheus, Grafana, les alertes et Loki. Ces leçons appellent « module 02 » ou « module 04 » une étape du lab : à ne pas confondre avec les modules de la formation, qui regroupent plusieurs leçons.

Les autres leçons de pratique, sur les exporters, PromQL, Loki avec Alloy, OpenTelemetry et le Collector, tournent hors du cluster. Elles n'ont donc pas de dossier dans le dépôt du lab : leurs fichiers sont dans la page.

L'application de démonstration déploie à elle seule une vingtaine de microservices, auxquels s'ajoutent Prometheus, Grafana, Alertmanager et Loki. En dessous de 8 Go de RAM, Minikube commence à évincer des pods et les leçons du lab deviennent difficiles à valider.

RessourceMinimumRecommandé
RAM8 Go16 Go
CPU4 cœurs6+ cœurs
Disque20 Go libres40 Go libres
OSLinux, macOS, Windows (WSL2)Linux

Chaque leçon du lab ajoute une brique au schéma ci-dessous, jamais plus d'une à la fois. Le principe reste constant : les applications émettent des signaux, un collecteur les route, une base spécialisée les stocke, et Grafana sert de point d'entrée unique pour les interroger. Repérez dès maintenant où se situe la brique que vous installez : cela évite de confondre un problème de collecte avec un problème de stockage.

Stack du lab en quatre étages : Grafana interroge Prometheus, Loki et Tempo ; Prometheus scrape l'OTel Collector sur le port 8889 et Tempo reçoit ses traces en OTLP ; Loki reçoit les logs de Promtail ; le Collector reçoit l'OTLP de l'OTel Demo et Promtail lit son stdout.ApplicationCollecteursBackendsGrafanascrape 8889OTLPOTLPstdoutDashboards, Explore,AlertingPrometheusmétriquesLokilogsTempotracesOTel CollectorPromtailOTel Demo23 microservices
Source · SVG
Échap pour fermer, + et − pour zoomer, défilement pour se déplacer. 100 %

Lisez ce tableau ligne par ligne : chaque signal suit le même trajet, mais avec des outils et surtout un langage de requête différents. C'est la principale source de confusion au début : PromQL et LogQL se ressemblent sans être interchangeables. La ligne des traces décrit la stack complète ; cette formation s'arrête à leur émission.

SignalCollecteStockageRequêtageVisualisation
MétriquesOTel CollectorPrometheus TSDBPromQLGrafana
LogsPromtail, AlloyLokiLogQLGrafana
TracesOTel CollectorTempo, JaegerTraceQLGrafana, Jaeger
AlertesPrometheus RulesAlertmanagerPromQL (règles)Grafana

Le lab observe l'OpenTelemetry Demo, l'application de référence de la CNCF pour l'observabilité : un site e-commerce d'une vingtaine de microservices, sollicité en continu par un générateur de charge.

Un « hello world » instrumenté ne produirait qu'une trace à un seul saut et des métriques sans variation, donc rien d'intéressant à observer. L'OpenTelemetry Demo génère au contraire du trafic continu, des appels entre services écrits dans des langages différents, et des pannes déclenchables à la demande.

CritèreAvantage
Multi-langageGo, Java, .NET, Python, Node.js, Rust, représentatif du monde réel
Instrumentation nativeMétriques et traces OpenTelemetry intégrées
Générateur de chargeTrafic réaliste automatique avec Locust
Scénarios d'erreurFeature flags pour simuler des pannes
Open sourceMaintenu par la CNCF, bien documenté

Inutile de mémoriser ce schéma, mais gardez-le sous la main : quand une latence grimpera, c'est ici que vous identifierez quel service parle à quel autre. Les flèches représentent des appels applicatifs, pas des flux de télémétrie.

Appels entre services de l'OpenTelemetry Demo : le frontend React appelle le panier (Redis) et le catalogue (gRPC) ; le panier mène au checkout (Go), qui appelle le paiement (Node.js) et l'expédition (Rust) ; le catalogue appelle la recommandation (Python). Le service publicitaire (Java) complète l'ensemble.Backend ServicesFrontend LayerFrontendReactCartRedisCheckoutGoProduct CataloggRPCPaymentNode.jsShippingRustRecommendationPythonAd ServiceJava
Source · SVG
Échap pour fermer, + et − pour zoomer, défilement pour se déplacer. 100 %

Les fichiers de values Helm utilisés dans le lab sont regroupés dans un dépôt public. Clonez-le avant de commencer : les leçons y font référence par leur chemin, et recopier à la main des centaines de lignes de YAML depuis une page web est la meilleure façon d'introduire une erreur d'indentation.

Fenêtre de terminal
git clone https://github.com/stephrobert/lab-observability.git
cd lab-observability

Un dossier par leçon de lab, nommé exactement comme elle, ce qui permet de retrouver un fichier de values sans chercher. Les leçons qui tournent hors du cluster n'ont pas de dossier, comme on l'a vu plus haut : leurs fichiers sont dans la page.

lab-observability/
├── 00-setup/ # Scripts de vérification
├── 01-demo-app/
│ ├── values.yaml # Helm values pour OTel Demo
│ └── otel-collector-values.yaml # Config du Collector
├── 02-prometheus/
│ └── helm-values/
│ └── prometheus-minimal.yaml
├── 03-grafana/
│ └── helm-values/
│ └── grafana.yaml
├── 04-alerting/
│ ├── helm-values/
│ │ └── alertmanager.yaml
│ └── rules/ # Règles d'alerte
├── 05-loki/
│ └── helm-values/
│ └── loki-stack.yaml
└── README.md

Les interfaces sont exposées en NodePort, c'est-à-dire sur un port fixe de l'adresse IP de Minikube, et non en port-forward : l'accès survit ainsi à la fermeture du terminal. Aucune de ces interfaces n'est protégée en dehors du mot de passe Grafana ; ce lab reste strictement local et ne doit pas être exposé sur un réseau partagé.

ServiceURLCredentials
OTel Demohttp://<MINIKUBE_IP>:30080Aucun
Prometheushttp://<MINIKUBE_IP>:30090Aucun
Grafanahttp://<MINIKUBE_IP>:30030admin / admin
Alertmanagerhttp://<MINIKUBE_IP>:30093Aucun

L'adresse de Minikube s'obtient avec une seule commande, à relancer après chaque recréation du cluster :

Fenêtre de terminal
minikube ip

L'écueil le plus fréquent sur ce type de lab est de lire vite et de ne rien retenir. Les cinq réflexes ci-dessous coûtent quelques minutes par leçon et évitent de repartir de zéro. Le premier est le plus important : une erreur non corrigée se propage en cascade dans les leçons suivantes.

  1. Suivez l'ordre des leçons

    Chaque leçon du lab installe des composants utilisés par les suivantes. Sauter une leçon causera des erreurs.

  2. Exécutez chaque commande

    Ne vous contentez pas de lire. Tapez chaque commande et observez le résultat.

  3. Validez avant d'avancer

    Chaque leçon de lab se termine par une section « Validation ». Assurez-vous que tout fonctionne avant de continuer.

  4. En cas de problème, consultez le dépannage

    Chaque leçon contient une section « Dépannage » avec les erreurs courantes.

  5. Passez le quiz de chaque leçon de pratique

    Il vérifie que vous avez compris pourquoi, pas seulement comment : c'est lui qui valide la compétence.

  • Le lab est un cluster Minikube local qui observe l'OpenTelemetry Demo, une vingtaine de microservices
  • Comptez 8 Go de RAM au minimum, 16 Go pour travailler confortablement
  • Les leçons 00 à 05 se jouent sur le cluster ; les autres tournent hors du cluster, fichiers dans la page
  • Le dépôt lab-observability porte un dossier par leçon de lab : clonez-le avant de commencer
  • Les interfaces sont en NodePort sur minikube ip, sans protection : le lab reste strictement local
  • Chaque leçon du lab installe ce que la suivante interroge : validez avant d'avancer

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn