GUIDE TECHNIQUE · OPENTELEMETRY
Déployer OpenTelemetry Collector dans Kubernetes
Déployer un OpenTelemetry Collector sur Kubernetes avec le chart Helm officiel, choisir le mode deployment, envoyer des traces OTLP de recette, vérifier le déploiement et disposer d'un retour arrière. Cet exemple ne constitue pas une architecture de production prête à l'emploi.
01 · CADRAGE
Ce que vous allez mettre en place
Déployer un OpenTelemetry Collector sur Kubernetes avec le chart Helm officiel, choisir le mode deployment, envoyer des traces OTLP de recette, vérifier le déploiement et disposer d'un retour arrière. Cet exemple ne constitue pas une architecture de production prête à l'emploi.
Pour qui : Administrateurs, équipes observabilité et exploitation
Kubernetes avec Helm 3 et le chart officiel OpenTelemetry Collector. Fixer la version du chart et de l'image après vérification de compatibilité ; la commande illustre un laboratoire isolé.
Vérifiez la compatibilité avec votre environnement réel. Les versions ne sont jamais présumées identiques d’un tenant à l’autre.
02 · AVANT DE COMMENCER
Prérequis et points de contrôle
- Accès kubectl à un cluster de recette autorisé et namespace otel-system.
- Helm 3 et chart OpenTelemetry consultables ; version du chart choisie et figée.
- Droits Kubernetes pour Deployment, Service et ConfigMap ; ports autorisés uniquement dans le périmètre de test.
- Générateur telemetrygen installé sur le poste de test ; vérifier l'image k8s et les composants du Collector.
03 · VUE D’ENSEMBLE
Comprendre l’architecture et les flux

Illustration éditoriale validée ADN Consulting, distincte d’une capture de console.
Source : ADN Consulting04 · TUTORIEL
Procédure complète, étape par étape
Chaque étape explique l’action, sa raison, le contrôle attendu et les erreurs habituelles. Adaptez les exemples aux paramètres de votre propre environnement.
ÉTAPE 1 / 5
Choisir Deployment, DaemonSet ou StatefulSet
Le chart ne peut pas être installé sans mode. Un Deployment convient à une passerelle OTLP partagée ; un DaemonSet est mieux adapté à la collecte locale par nœud.
- Valider que les applications envoient leurs traces vers une passerelle et que la collecte par nœud n'est pas requise.
- Réserver le namespace de recette ; vérifier les politiques réseau et les quotas.
- Choisir une version de chart via helm search repo avant de la figer.
kubectl create namespace otel-system
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm repo update
helm search repo open-telemetry/opentelemetry-collector --versionsÀ vérifier : Le namespace existe ; une version de chart validée est connue.
Point de vigilance ADN : Ne déployez pas un DaemonSet pour un besoin de gateway unique ; éviter tout double export.
ÉTAPE 2 / 5
Préparer les valeurs Helm
Un fichier values.yaml versionné rend la configuration relisible et évite les valeurs par défaut non désirées.
- Créer values.yaml avec le mode deployment, le receiver OTLP et une unique pipeline traces.
- Désactiver les receivers et pipelines non utilisés de l'exemple.
- Conserver debug uniquement en recette ; choisir un exporteur OTLP sécurisé pour la production.
mode: deployment
replicaCount: 1
image:
repository: otel/opentelemetry-collector-k8s
config:
receivers:
jaeger: null
prometheus: null
zipkin: null
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [debug]
metrics: null
logs: null
ports:
jaeger-compact:
enabled: false
jaeger-thrift:
enabled: false
jaeger-grpc:
enabled: false
zipkin:
enabled: falseÀ vérifier : Le fichier définit les composants du pipeline et le mode, sans exporter de données client.
Point de vigilance ADN : Vérifier l'image et les valeurs du chart sélectionné avec helm show values ; les schémas évoluent.
ÉTAPE 3 / 5
Configurer receiver et exporter
La version du chart et les valeurs sont deux paramètres de reproductibilité distincts.
- Remplacer CHART_VERSION_VALIDEE par la version sélectionnée à l'étape précédente.
- Faire afficher les manifests avant tout déploiement et contrôler le Service/les ports.
- Installer la release dans otel-system, puis vérifier Deployment et événements.
helm template otel-gateway open-telemetry/opentelemetry-collector --version CHART_VERSION_VALIDEE -n otel-system -f values.yaml
helm upgrade --install otel-gateway open-telemetry/opentelemetry-collector --version CHART_VERSION_VALIDEE -n otel-system -f values.yaml
kubectl get deployments,pods,svc -n otel-systemÀ vérifier : La release Helm est installée ; ses pods passent READY et un service expose le receiver OTLP.
Point de vigilance ADN : CHART_VERSION_VALIDEE est une valeur à remplacer ; ces commandes ne doivent pas être copiées en production sans recette.
ÉTAPE 4 / 5
Déployer puis inspecter
Un pod READY ne garantit ni réception ni export de traces.
- Identifier le vrai nom de Service avec kubectl get svc (il varie selon release/chart).
- Dans un terminal, rediriger temporairement le port 4317 du Service sélectionné.
- Dans un autre terminal, émettre cinq traces ; lire les journaux du Collector et repérer leurs spans.
kubectl get svc -n otel-system
# Terminal 1 : remplacer SERVICE_OTLP par le nom réellement affiché
kubectl port-forward -n otel-system service/SERVICE_OTLP 4317:4317
# Terminal 2 : telemetrygen doit être installé
telemetrygen traces --otlp-endpoint localhost:4317 --otlp-insecure --traces 5
kubectl logs -n otel-system -l app.kubernetes.io/instance=otel-gateway --tail=100À vérifier : Cinq traces de test sont émises et des ResourceSpans correspondants apparaissent dans debug.
Point de vigilance ADN : Le port-forward est local et temporaire ; aucun endpoint non authentifié ne doit être publié sur Internet.
ÉTAPE 5 / 5
Vérifier sécurité et performance
Le passage en RUN exige sécurité, observabilité du pipeline et procédure de rollback.
- Vérifier ressources CPU/mémoire, RBAC, NetworkPolicy, TLS, secrets, limitations de débit et backpressure.
- Remplacer debug par un exporteur vers un backend autorisé ; retester sous charge.
- Consulter l'historique Helm et documenter le retour arrière en cas d'échec.
helm history otel-gateway -n otel-system
# En cas de retour arrière validé : remplacer REVISION_PRECEDENTE
helm rollback otel-gateway REVISION_PRECEDENTE -n otel-system
kubectl rollout status deployment/otel-gateway-opentelemetry-collector -n otel-systemÀ vérifier : La procédure de retour arrière est définie ; les limites de l'exemple de laboratoire sont explicites.
Point de vigilance ADN : Ne déclenchez pas le rollback d'exemple sans identifier la révision et le nom exact du Deployment.
05 · RECETTE
Comment vérifier que tout fonctionne ?
La version Helm/chart/image est épinglée et archivée avec values.yaml.
Le chart accepte le mode deployment et les manifests sont relus.
Une trace émise par telemetrygen est retrouvée dans les logs du Collector.
Les ports sont limités à la recette et le passage en production impose TLS, contrôle d'accès et un véritable backend.
L'historique Helm et la marche arrière sont connus.
06 · DIAGNOSTIC
Problèmes fréquents et résolution
Pods CrashLoopBackOff
Cause probable : Configuration invalide ou composant non disponible
Que faire : Lire kubectl describe et kubectl logs ; comparer à helm show values de la version.
Aucune trace dans debug
Cause probable : Port-forward, Service, receiver ou protocole erroné
Que faire : Vérifier svc et endpoints, puis correspondance gRPC 4317 ou HTTP 4318.
Traces doublonnées
Cause probable : Plusieurs Collectors collectent le même flux
Que faire : Vérifier le mode Deployment/DaemonSet et les routes OTLP.
Saturation mémoire
Cause probable : Buffers ou débit dépassent les ressources
Que faire : Examiner les métriques Collector et adapter memory_limiter, mémoire, batch et retry.
Le conseil de l’expert ADN
Avant de généraliser cette configuration, validez-la sur un périmètre représentatif, documentez les critères de réussite et conservez une procédure de retour arrière. Une instrumentation utile se juge sur les données effectivement exploitables, pas sur la seule installation de l’outil.
07 · QUESTIONS PRATIQUES
Questions fréquentes
Le values.yaml est-il prêt pour la production ?
Non : l'exporter debug et l'exposition de labo servent uniquement à vérifier l'arrivée des traces. Configurez un backend, TLS, secrets et dimensionnement.
Peut-on choisir daemonset ?
Oui, pour la collecte par nœud ; vérifier les presets et les volumes pour éviter de collecter deux fois les mêmes journaux.
