En Kubernetes, los rastreadores de Datadog pueden enviar datos al Datadog Agent de tres formas: Unix Domain Socket (UDS), IP de host, o un servicio de Kubernetes. Cada opción asegura que cuando un pod de aplicación envía datos de APM, los datos llegan a un pod del Datadog Agent en el mismo nodo. Esta estrategia está pensada para equilibrar adecuadamente el tráfico y asegurar el correcto etiquetado de tus datos. Datadog recomienda que utilices UDS para enviar datos.
Sin embargo, si los volúmenes hostPath necesarios para UDS (y los puertos hostPort necesarios para utilizar IP de host) no están disponibles, puedes utilizar un servicio de Kubernetes como opción alternativa.
Esta guía describe cómo configurar mediante un servicio de Kubernetes para enviar datos al Datadog Agent.
En Kubernetes 1.22, la función Política de tráfico interna ofrece la opción de establecer la configuración internalTrafficPolicy: Local en un servicio. Cuando se configura, el tráfico de un pod de aplicación se dirige al pod de descarga del servicio en el mismo nodo.
Si has instalado el Datadog Agent utilizando la Helm chart de Datadog o Datadog Operator en clústeres con Kubernetes v1.22.0+, se te creará automáticamente un servicio para el Agent con internalTrafficPolicy: Local. Además, debes activar la opción de puerto de APM para tu Agent con la siguiente configuración.
Puedes configurar tu aplicación para utilizar el servicio de Kubernetes mediante el Controlador de admisión (Admission Controller) del Cluster Agent, o con una configuración manual.
El Controlador de admisión (Admission Controller) del Cluster Agent puedes inyectar la configuración para la conectividad de APM en tus contenedores. Las opciones son hostip, socket o service. Elige el modo service para que el Controlador de admisión (Admission Controller) añada la variable de entorno DD_AGENT_HOST para el nombre de DNS del servicio.
Nota: En entornos de nodo mixto (Linux/Windows), el Cluster Agent y su Controlador de admisión (Admission Controller) son relativos al despliegue de Linux. Esto puede inyectar las variables de entorno incorrectas para la conectividad del servicio en los pods de Windows.
Para la configuración manual, establece la variable de entorno DD_AGENT_HOST dentro de tu manifiesto de pod, con un valor de <SERVICE_NAME>.<SERVICE_NAMESPACE>.svc.cluster.local.