El Controlador de Admisión de Datadog es un componente del Agente de Clúster de Datadog. El principal beneficio del Controlador de Admisión es simplificar la configuración de su Pod de aplicación. Para ello, tiene dos funcionalidades principales:
Inyectar variables de entorno (DD_AGENT_HOST, DD_TRACE_AGENT_URL, DD_ENTITY_ID y DD_EXTERNAL_ENV) para configurar DogStatsD y los SDK de Datadog en los contenedores de la aplicación del usuario.
Inyectar etiquetas estándar de Datadog (env, service, version) desde las etiquetas de la aplicación en las variables de entorno del contenedor.
El Datadog Operator habilita el Controlador de Admisión de Datadog por defecto. No se necesita configuración adicional para habilitar el Controlador de Admisión.
Si deshabilitó el Controlador de Admisión, puede volver a habilitarlo configurando el parámetro features.admissionController.enabled a true en su configuración de DatadogAgent:
A partir de la versión v2.35.0 del gráfico de Helm, el Controlador de Admisión de Datadog está habilitado por defecto. No se necesita configuración adicional para habilitar el Controlador de Admisión.
Para habilitar el Controlador de Admisión para el gráfico de Helm v2.34.6 y versiones anteriores, configure el parámetro clusterAgent.admissionController.enabled a true:
datadog-values.yaml
#(...)clusterAgent:#(...)## @param admissionController - object - required## Enable the admissionController to automatically inject APM and## DogStatsD config and standard tags (env, service, version) into## your pods#admissionController:enabled:true## @param mutateUnlabelled - boolean - optional## Enable injecting config without having the pod label:## admission.datadoghq.com/enabled="true"#mutateUnlabelled:false
Para habilitar el Controlador de Admisión sin usar Helm o el operador de Datadog, agregue lo siguiente a su configuración:
Agregue variables de entorno al despliegue del Agente de Clúster que habiliten el Controlador de Admisión:
cluster-agent-deployment.yaml
- name:DD_ADMISSION_CONTROLLER_ENABLEDvalue:"true"- name:DD_ADMISSION_CONTROLLER_SERVICE_NAMEvalue:"datadog-cluster-agent-admission-controller"# Uncomment this to configure Datadog SDKs automatically (see below)# - name: DD_ADMISSION_CONTROLLER_MUTATE_UNLABELLED# value: "true"
Finalmente, ejecute los siguientes comandos:
kubectl apply -f cluster-agent-rbac.yaml
kubectl apply -f agent-services.yaml
kubectl apply -f cluster-agent-deployment.yaml
Inyección de biblioteca de instrumentación APM
Puede configurar el Agente de Clúster (versión 7.39 y superior) para inyectar bibliotecas de instrumentación utilizando Instrumentación de Paso Único. Lee Instrumentación APM de Paso Único para más información.
Si no desea utilizar la Instrumentación de Paso Único, se puede usar el Controlador de Admisión de Datadog para inyectar SDKs de Datadog directamente como una alternativa manual a nivel de pod. Lee Inyección de SDK Local para más información.
Inyección de variables de entorno APM y DogStatsD
Para configurar clientes de DogStatsD u otras bibliotecas APM que no soportan inyección de bibliotecas, inyecte las variables de entorno DD_AGENT_HOST y DD_ENTITY_ID haciendo una de las siguientes acciones:
Agregue la etiqueta admission.datadoghq.com/enabled: "true" a su Pod.
Configure el controlador de admisión del Agente de Clúster estableciendo mutateUnlabelled (o DD_ADMISSION_CONTROLLER_MUTATE_UNLABELLED, dependiendo de su método de configuración) a true.
Agregar una configuración de Agente mutateUnlabelled: true en el chart de Helm hace que el Agente de Clúster intente interceptar cada Pod sin etiquetar.
Para evitar que los Pods reciban variables de entorno, agregue la etiqueta admission.datadoghq.com/enabled: "false". Esto funciona incluso si establece mutateUnlabelled: true.
Si mutateUnlabelled está establecido en false, la etiqueta del Pod debe establecerse en 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_ENV o DD_SERVICE si ya existen.
Cuando estas variables de entorno no están configuradas, el Controlador de Admisión utiliza el valor de las etiquetas estándar en el siguiente orden (de mayor a menor):
Etiquetas en el Pod
Etiquetas en el ownerReference (ReplicaSets, DaemonSets, Deployments, etc.)
Configurar el modo de comunicación de APM y DogStatsD
A partir de la versión 1.20.0 del Agente de Clúster de Datadog, el Controlador de Admisión de Datadog se puede configurar para inyectar diferentes modos de comunicación entre la aplicación y el agente de Datadog.
Esta función se puede configurar estableciendo admission_controller.inject_config.mode o definiendo un modo específico del Pod utilizando la etiqueta del Pod admission.datadoghq.com/config.mode.
A partir de la versión 3.22.0 del gráfico de Helm y la versión 1.1.0 del Operador de Datadog, el modo de comunicación se establece automáticamente en socket si se habilita el socket de APM o el socket de DSD.
Opciones posibles:
Modo
Descripción
hostip (Predeterminado)
Inyectar la IP del host en la variable de entorno DD_AGENT_HOST
service
Inyectar el nombre DNS del servicio local de Datadog en la variable de entorno DD_AGENT_HOST (disponible con Kubernetes v1.22+)
socket
Inyectar la ruta del socket de dominio Unix en la variable de entorno DD_TRACE_AGENT_URL y la definición del volumen para acceder a la ruta correspondiente. Inyectar la URL que se utilizará para conectar el Agente de Datadog para métricas de DogStatsD en DD_DOGSTATSD_URL.
csi
Inyectar las rutas del socket de dominio Unix en las variables de entorno DD_TRACE_AGENT_URL y DD_DOGSTATSD_URL y la definición del volumen CSI de Datadog para acceder a las rutas correspondientes. Este modo está disponible para el Agente de Clúster de Datadog v7.67+.
Nota: El modo específico del pod tiene prioridad sobre el modo global definido a nivel del Controlador de Admisión.