Aller au contenu

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.

Niveau Avancé6 min de lecture— vuesOpenTelemetry

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

Environnement et versions

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

ARCHITECTURE TECHNIQUEComprendre la chaîne de bout en bout
01Application instrumentée
02Collecte et configuration
03Traitement du signal
04Console de supervision
05Décision RUN
Application de recette → Service Kubernetes (OTLP) → Collector en Deployment → exporter debug (journaux). Pour la production, substituer un exporteur sécurisé et dimensionner la collecte.
Visuel ADN Consulting opentelemetry
Aperçu de l’environnement OpenTelemetry

Illustration éditoriale validée ADN Consulting, distincte d’une capture de console.

Source : ADN Consulting

04 · 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.

01

É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.

  1. Valider que les applications envoient leurs traces vers une passerelle et que la collecte par nœud n'est pas requise.
  2. Réserver le namespace de recette ; vérifier les politiques réseau et les quotas.
  3. Choisir une version de chart via helm search repo avant de la figer.
Exemple techniqueÀ adapter à votre environnement
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
Ce qui se passe à cette étape
1Application instrumentée
2Choisir Deployment, DaemonSet ou StatefulSet
3Le namespace existe ; une version de chart validée est connue.

À 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.

02

É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.

  1. Créer values.yaml avec le mode deployment, le receiver OTLP et une unique pipeline traces.
  2. Désactiver les receivers et pipelines non utilisés de l'exemple.
  3. Conserver debug uniquement en recette ; choisir un exporteur OTLP sécurisé pour la production.
Exemple techniqueÀ adapter à votre environnement
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
Ce qui se passe à cette étape
1Collecte et configuration
2Préparer les valeurs Helm
3Le fichier définit les composants du pipeline et le mode, sans exporter de données client.

À 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.

03

ÉTAPE 3 / 5

Configurer receiver et exporter

La version du chart et les valeurs sont deux paramètres de reproductibilité distincts.

  1. Remplacer CHART_VERSION_VALIDEE par la version sélectionnée à l'étape précédente.
  2. Faire afficher les manifests avant tout déploiement et contrôler le Service/les ports.
  3. Installer la release dans otel-system, puis vérifier Deployment et événements.
Exemple techniqueÀ adapter à votre environnement
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
Ce qui se passe à cette étape
1Traitement du signal
2Configurer receiver et exporter
3La release Helm est installée ; ses pods passent READY et un service expose le receiver OTLP.

À 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.

04

ÉTAPE 4 / 5

Déployer puis inspecter

Un pod READY ne garantit ni réception ni export de traces.

  1. Identifier le vrai nom de Service avec kubectl get svc (il varie selon release/chart).
  2. Dans un terminal, rediriger temporairement le port 4317 du Service sélectionné.
  3. Dans un autre terminal, émettre cinq traces ; lire les journaux du Collector et repérer leurs spans.
Exemple techniqueÀ adapter à votre environnement
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
Ce qui se passe à cette étape
1Console de supervision
2Déployer puis inspecter
3Cinq traces de test sont émises et des ResourceSpans correspondants apparaissent dans debug.

À 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.

05

ÉTAPE 5 / 5

Vérifier sécurité et performance

Le passage en RUN exige sécurité, observabilité du pipeline et procédure de rollback.

  1. Vérifier ressources CPU/mémoire, RBAC, NetworkPolicy, TLS, secrets, limitations de débit et backpressure.
  2. Remplacer debug par un exporteur vers un backend autorisé ; retester sous charge.
  3. Consulter l'historique Helm et documenter le retour arrière en cas d'échec.
Exemple techniqueÀ adapter à votre environnement
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
Ce qui se passe à cette étape
1Décision RUN
2Vérifier sécurité et performance
3La procédure de retour arrière est définie ; les limites de l'exemple de laboratoire sont explicites.

À 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 ?

Résultat attenduContrôles avant de considérer la procédure terminée
01

La version Helm/chart/image est épinglée et archivée avec values.yaml.

02

Le chart accepte le mode deployment et les manifests sont relus.

03

Une trace émise par telemetrygen est retrouvée dans les logs du Collector.

04

Les ports sont limités à la recette et le passage en production impose TLS, contrôle d'accès et un véritable backend.

05

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.

Pour aller plus loin