Si despliegas el Datadog Agent usando Helm chart v2.7.0 o Datadog Operator v0.7.0 (o sus respectivas versiones posteriores), el Cluster Agent estará habilitado de forma predeterminada.
El Cluster Agent está habilitado de forma predeterminada a partir de Helm chart v2.7.0.
Para habilitarlo en versiones anteriores, o si utilizas un datadog-values.yaml personalizado que anula la clave clusterAgent, debes actualizar tu archivo datadog-values.yaml con la siguiente configuración del Cluster Agent:
clusterAgent:# clusterAgent.enabled -- Set this to false to disable Datadog Cluster Agentenabled:true
A continuación, actualiza el Helm chart de Datadog.
Esto actualiza automáticamente los archivos de configuración del control de acceso basado en roles (RBAC) necesarios para el Cluster Agent y el Datadog Agent. Ambos Agents utilizan la misma clave de API.
Para garantizar la comunicación, también se genera automáticamente un token aleatorio en un Secret compartido por el Cluster Agent y el Datadog Agent. Puedes especificar manualmente este token a través de la configuración de clusterAgent.token. Alternativamente, puedes establecerlo indicando el nombre de un Secret existente que contenga un valor token a través de la configuración de clusterAgent.tokenExistingSecret.
Cuando se configura manualmente, este token debe estar compuesto por 32 caracteres alfanuméricos.
El Cluster Agent está habilitado de forma predeterminada a partir del Datadog Operator v1.0.0. El Operator configura los controles de acceso basado en roles necesarios, implementa el Cluster Agent y modifica la configuración del DaemonSet del Agent.
Para garantizar la comunicación, también se genera automáticamente un token aleatorio en un Secret compartido por el Cluster Agent y el Datadog Agent. Puedes especificar manualmente este token configurando el campo global.clusterAgentToken. Alternativamente, puedes establecerlo indicando el nombre de un Secret existente y a la clave de datos que contiene este token.
Configura los permisos de control de acceso basado en roles del Cluster Agent
El Datadog Cluster Agent necesita una configuración del control de acceso basado en roles (RBAC) adecuada para funcionar:
Revisa los manifiestos de la carpeta de RBAC del Datadog Cluster Agent. Nota: Cuando utilizas el Cluster Agent, tus Agents de nodo no pueden interactuar con el servidor de la API de Kubernetes; solo el Cluster Agent es capaz de hacerlo.
Para configurar los permisos del control de acceso basado en roles del Cluster Agent, aplica los siguientes manifiestos. (Es posible que ya lo hayas hecho al configurar el daemonset del Agent de nodo).
Garantiza la comunicación entre el Cluster Agent y el Agent
El Datadog Agent y el Cluster Agent necesitan un token para garantizar su comunicación. Se recomienda que guardes este token en un Secret que tanto el Datadog Agent como el Cluster Agent puedan referenciar en la variable de entorno DD_CLUSTER_AGENT_AUTH_TOKEN. Esto ayuda a mantener la coherencia y a evitar que el token sea legible en el PodSpec.
Para crear el token, ejecuta este comando de una línea para generar un Secret llamado datadog-cluster-agent con un parámetro token. Reemplaza el parámetro <TOKEN> por 32 caracteres alfanuméricos.
Nota: Esto crea un Secret en el espacio de nombres predeterminado. Si estás en un espacio de nombres personalizado, actualiza el parámetro de espacio de nombres del comando antes de ejecutarlo.
El archivo predeterminado cluster-agent-deployment.yaml proporcionado para el Cluster Agent ya está configurado para ver este Secret con la configuración de variable de entorno:
En el manifiesto secret-api-key.yaml, reemplaza PUT_YOUR_BASE64_ENCODED_API_KEY_HERE por tu clave de API de Datadog, codificada en Base64. Para obtener la versión de Base64 de tu clave de API, puedes ejecutar esto:
echo -n '<Your API key>'| base64
En el manifiesto secrets-application-key.yaml reemplaza PUT_YOUR_BASE64_ENCODED_APP_KEY_HERE por tu clave de aplicación de Datadog, codificada en Base64.
De forma predeterminada, el manifiesto cluster-agent-deployment.yaml indica el token creado previamente en el parámetro datadog-cluster-agent del Secret. Si quieres almacenar este token de otra forma, configura tu variable de entorno DD_CLUSTER_AGENT_AUTH_TOKEN en consecuencia.
Despliega estos recursos para que los utilice la implementación del Cluster Agent:
Nota: En tu Datadog Cluster Agent, establece la variable de entorno DD_SITE en tu sitio Datadog: . El sitio predeterminado de datadoghq.com es US.
Verificación
Llegados a este punto, deberías ver lo siguiente:
kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
datadog-cluster-agent 1111 1d
kubectl get secret
NAME TYPE DATA AGE
datadog-cluster-agent Opaque 1 1d
kubectl get pods -l app=datadog-cluster-agent
datadog-cluster-agent-8568545574-x9tc9 1/1 Running 0 2h
kubectl get service -l app=datadog-cluster-agent
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
datadog-cluster-agent ClusterIP 10.100.202.234 none 5005/TCP 1d
Nota: Si el Datadog Agent ya en ejecución, puede que necesites aplicar el manifiesto rbac.yaml del Agent antes de que el Cluster Agent pueda empezar a ejecutarse.
Configurar la comunicación del Datadog Agent
Modifica la configuración de tu Datadog Agent para que se comunique con el Datadog Cluster Agent.
Después de volver a desplegar tu DaemonSet con estas configuraciones, el Datadog Agent es capaz de comunicarse con el Cluster Agent. Puedes consultar el manifiesto daemonset.yaml del Cluster Agent para ver un ejemplo completo.
Verificación
Para verificar que los pods del Datadog Agent y del Cluster Agent están en ejecución, ejecuta el siguiente comando:
Adicionalmente, puedes verificar que el Datadog Agent se ha conectado correctamente al Cluster Agent con el resultado del estado del Agent.
kubectl exec -it <AGENT_POD_NAME> agent status
[...]=====================Datadog Cluster Agent===================== - Datadog Cluster Agent endpoint detected: https://10.104.246.194:5005
Successfully connected to the Datadog Cluster Agent.
- Running: 1.11.0+commit.4eadd95
Los eventos de Kubernetes comienzan a fluir hacia tu cuenta de Datadog, y las métricas relevantes recopiladas por tus Agents se han etiquetado con sus correspondientes metadatos del clúster.
Contenedores de Windows
El Datadog Cluster Agent solo se puede implementar en nodos de Linux.
Para monitorizar los contenedores de Windows, utiliza dos instalaciones del Helm chart en un clúster mixto. El primer Helm chart despliega el Datadog Cluster Agent y el Agent DaemonSet en los nodos de Linux (con targetSystem: linux). El segundo Helm chart (con targetSystem: windows) despliega el Agent solo en los nodos de Windows y se conecta al Cluster Agent desplegado como parte del primer Helm chart.
Para configurar la comunicación entre los Agents desplegados en nodos Windows y el Cluster Agent, utiliza el siguiente archivo values.yaml.
targetSystem:windowsexistingClusterAgent:join:trueserviceName:"<EXISTING_DCA_SECRET_NAME>"# from the first Datadog Helm charttokenSecretName:"<EXISTING_DCA_SERVICE_NAME>"# from the first Datadog Helm chart# Disable datadogMetrics deployment since it should have been already deployed with the first chart.datadog-crds:crds:datadogMetrics:false# Disable kube-state-metrics deploymentdatadog:kubeStateMetricsEnabled:false
Para monitorizar un servicio gestionado de AWS, como MSK, ElastiCache o RDS, configura clusterChecksRunner para crear un pod con un rol de IAM asignado a través del serviceAccountAnnotation del Helm chart. A continuación, establece las configuraciones de integración en clusterAgent.confd.
clusterChecksRunner:enabled:truerbac:# clusterChecksRunner.rbac.create -- If true, create & use RBAC resourcescreate:truededicated:trueserviceAccountAnnotations:eks.amazonaws.com/role-arn:arn:aws:iam::***************:role/ROLE-NAME-WITH-MSK-READONLY-POLICYclusterAgent:confd:amazon_msk.yaml:|- cluster_check: true
instances:
- cluster_arn: arn:aws:kafka:us-west-2:*************:cluster/gen-kafka/*******-8e12-4fde-a5ce-******-3
region_name: us-west-2
Leer más
Additional helpful documentation, links, and articles: