What you will learn in this TP
- Install the Operator
- Declare Collector and Instrumentation
- Instrument through annotation
Introduction #
What you will learn in this section
- Install the Operator
- Declare Collector and Instrumentation
- Instrument through annotation
Context. The platform team wants every cluster application to produce traces without each team changing its images. You validate the Operator approach.
Prerequisites: Docker, kubectl and kind · Estimated time: 50 min
An application instrumented without image changes, whose spans reach an Operator-managed Collector.Hands-on #
Guided steps, with their solution.
1. Prepare the cluster
Why? The Operator uses admission webhooks whose certificates are managed by cert-manager.
Create a kind cluster, install cert-manager then the Operator, and wait until they are available.2. Declare a Collector
Why? The Collector is described as a Kubernetes resource: the Operator creates the Deployment, Service and ConfigMap.
Create ademonamespace and anOpenTelemetryCollectorresource in deployment mode with an OTLP receiver,k8sattributesand thedebugexporter.3. Declare instrumentation
Why? The Instrumentation resource centralises exporter, propagators and sampling for a whole namespace.
Create anInstrumentationresource that sends OTLP/HTTP to the Collector, with tracecontext and baggage propagators and 100% sampling.4. Instrument an application through annotation
Why? The annotation is enough: the Operator injects the Python agent at pod start, without changing the image.
Deploy a small Flask application in a standard Python image with theinstrumentation.opentelemetry.io/inject-pythonannotation, then look at the injected init container andOTEL_*variables.5. Check the spans
Why? The debug exporter prints received spans with the Kubernetes attributes added by k8sattributes.
Generate a few requests through a port-forward, then look in the Collector logs for theGET /span,service.nameandk8s.pod.name.6. Evolve and clean up
Why? Changing the Instrumentation resource only affects recreated pods: deployments must be restarted.
Set sampling to 10%, restart the deployment, check the newOTEL_TRACES_SAMPLER_ARGvalue, then delete the cluster.
Difficulty level : ●●●○○ (3/5)
My progress
Sign in to track your progress and take notes. Sign in
Recommended Articles
OpenTelemetry sur Kubernetes : Operator, auto-instrumentation et Collector
Déployer OpenTelemetry sur Kubernetes : modes de déploiement du Collector (DaemonSet, Deployment,...
OpenTelemetry : Instrumentation Automatique vs Manuelle
Comprenez les différences entre l'instrumentation automatique et manuelle avec OpenTelemetry, leu...
Instrumenter sans code avec Grafana Beyla (OpenTelemetry eBPF Instrumentation)
Obtenir métriques RED et traces HTTP/gRPC de n'importe quelle application sans la modifier : Graf...
Envoyer des traces vers Tempo : instrumentation OpenTelemetry et Alloy
Produire et acheminer des traces vers Tempo : auto-instrumentation Python/Java/Node, SDK manuel, ...
Instrumenter ses applications pour Jaeger avec OpenTelemetry
Envoyer des traces à Jaeger avec OpenTelemetry : auto-instrumentation (Java, Python, Node.js), SD...
OpenInference : les conventions OpenTelemetry pour tracer les applications d'IA
Guide détaillé d'OpenInference : conventions sémantiques et instrumentations OpenTelemetry pour L...
Datadog sur Kubernetes : Operator, Cluster Agent et Autodiscovery
Superviser Kubernetes avec Datadog : Datadog Operator et ressource DatadogAgent, Cluster Agent, A...
Bonnes Pratiques OpenTelemetry (OTel) : Le Guide de l'Observabilité Moderne
Maîtrisez OpenTelemetry grâce à nos conseils d'experts : implémentation du Collector, respect des...
Les concepts fondamentaux d'OpenTelemetry : signaux, ressources, contexte et maturité
Le vocabulaire indispensable d'OpenTelemetry : les quatre signaux, API et SDK, ressource et instr...