El controlador de admisión de Datadog es un componente de Datadog Cluster Agent. El principal beneficio del controlador de admisión es simplificar la configuración de tu pod de aplicación. Para ello, cuenta con dos funcionalidades principales:
Inyectar las variables de entorno (DD_AGENT_HOST, DD_TRACE_AGENT_URL y DD_ENTITY_ID) para configurar las bibliotecas DogStatsD y del rastreador de APM en los contenedores de aplicaciones del usuario.
Inyectar las etiquetas (tags) estándar de Datadog (env, service y version) procedentes de las etiquetas de la aplicación en las variables de entorno del contenedor .
El controlador de admisión de Datadog es del tipo MutatingAdmissionWebhook. Para obtener más detalles sobre los controladores de admisión, consulta la guía de Kubernetes sobre controladores de admisión.
Requisitos
Datadog clúster Agent v7.40 o posterior
Configuración
Para habilitar el controlador de admisión para Operator de Datadog, debes establecer el parámetro features.admissionController.enabled como true en tu configuración DatadogAgent:
A partir de Helm charts v2.35.0, el controlador de admisión de Datadog está activado de forma predeterminada. No es necesaria ninguna configuración adicional para activarlo.
Para activar el controlador de admisión para Helm charts v2.34.6 o anterior, establece el parámetro clusterAgent.admissionController.enabled como true :
values.yaml
#(...)clusterAgent:#(...)## @param admissionController - objet - nécessaire## Habilita el controlador de admisión para inyectar automáticamente APM y## la configuración DogStatsD y etiquetas estándar (env, servicio, versión) en## tus pods#admissionController:enabled:true## @param mutateUnlabelled - booleano - opcional## Habilita la configuración de inyección sin tener la etiqueta del pod:## admission.datadoghq.com/enabled="true"#mutateUnlabelled:false
Para habilitar el controlador de admisión sin usar Helm o Operator de Datadog, añade lo siguiente a tu configuración:
Añade variables de entorno al despliegue de Cluster Agent que habilitan el controlador de admisión:
cluster-agent-deployment.yaml
- nombre:DD_ADMISSION_CONTROLLER_ENABLEDvalor:"true"- nombre:DD_ADMISSION_CONTROLLER_SERVICE_NAMEvalor:"datadog-cluster-agent-admission-controller"# Deselecciona esto para configurar los rastreadores APM automáticamente (ver más abajo).# - nombre: DD_ADMISSION_CONTROLLER_MUTATE_UNLABELLED# valor: "true"
Para configurar clientes DogStatsD u otras bibliotecas APM que no admitan la inyección de bibliotecas, inyecta las variables de entorno DD_AGENT_HOST y DD_ENTITY_ID realizando una de las siguientes acciones:
Añade la etiqueta admission.datadoghq.com/enabled: "true" a tu pod.
Configura el controlador de admisión del Cluster Agent estableciendo mutateUnlabelled (o DD_ADMISSION_CONTROLLER_MUTATE_UNLABELLED, dependiendo de tu método de configuración), como true.
Añadir una configuración del Agent mutateUnlabelled: true en el Helm chart hace que el Cluster Agent intente interceptar todos los pods sin etiquetar.
Para evitar que los pods reciban variables de entorno, añade la etiqueta admission.datadoghq.com/enabled: "false" . Esto funciona incluso si configuras el parámetro mutateUnlabelled: true.
Si mutateUnlabelled está configurado como false, la etiqueta del pod debe configurarse como admission.datadoghq.com/enabled: "true".
Opciones posibles:
mutateUnlabelled
Etiqueta del pod
Inyección
true
Sin etiqueta
Sí
true
admission.datadoghq.com/enabled=true
Sí
true
admission.datadoghq.com/enabled=false
No
false
Sin etiqueta
No
false
admission.datadoghq.com/enabled=true
Sí
false
admission.datadoghq.com/enabled=false
No
Orden de prioridad
El controlador de admisión de Datadog no inyecta las variables de entorno DD_VERSION, DD_ENVo DD_SERVICE si ya existen.
Cuando no se han definido estas variables de entorno, el controlador de admisión usa el valor de las etiquetas estándar en el siguiente orden (primero la más alta):
Etiquetas en el pod
Etiquetas en ownerReference (ReplicaSets, DaemonSets, Deployments, etc.)
Configurar el modo de comunicación entre APM y DogstatsD
A partir de Datadog Cluster Agent v1.20.0, el controlador de admisión de Datadog puede ser configurado para inyectar diferentes modos de comunicación entre la aplicación y el Datadog Agent.
Esta función puede configurarse mediante el parámetro admission_controller.inject_config.mode, o definiendo un modo específico de pod mediante el uso de la etiqueta de pod admission.datadoghq.com/config.mode.
Opciones posibles:
Modo
Descripción
hostip (por defecto) Inyecta la IP de host en la variable de entorno DD_Agent_HOST…
service
Inyecta el nombre DNS local de Datadog en la variable de entornoDD_Agent_HOST (disponible con Kubernetes v1.22+).
socket
Inyecta la ruta Unix Domain Socket en la variable de entorno DD_TRACE_Agent_URL y la definición del volumen para acceder a la ruta correspondiente. Inyecta la URL a utilizar para conectar el Datadog Agent para métricas de DogStatsD en DD_DOGSTATSD_URL.
Nota: El modo específico del pod tiene prioridad sobre el modo global definido en el nivel del controlador de admisión.