El Datadog Operator es un operador de Kubernetes de código abierto que te permite desplegar y configurar el Datadog Agent en un entorno de Kubernetes. Esta guía te explica cómo debe utilizarse el Operator para desplegar el Datadog Agent.

Requisitos previos

  • Kubernetes v1.20.X o posterior
  • Helm para desplegar el Datadog Operator
  • La herramienta de línea de comandos de Kubernetes, kubectl]4, para instalar el Datadog Agent

Instalación y despliegue

  1. Instala el Datadog Operator con Helm:
helm repo add datadog https://helm.datadoghq.com
helm install my-datadog-operator datadog/datadog-operator
  1. Crea un secreto de Kubernetes con tu API y las claves de tu aplicación:
kubectl create secret generic datadog-secret --from-literal api-key=<DATADOG_API_KEY> --from-literal app-key=<DATADOG_APP_KEY>

Reemplaza <DATADOG_API_KEY> y <DATADOG_APP_KEY> por tu API de Datadog API y las claves de tu aplicación.

  1. Crea un archivo datadog-agent.yaml con las especificaciones de la configuración de despliegue del DatadogAgent. La configuración del siguiente ejemplo activa las métricas, los logs y la herramienta APM:
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiSecret:
        secretName: datadog-secret
        keyName: api-key
      appSecret:
        secretName: datadog-secret
        keyName: app-key
  features:
    apm:
      enabled: true
    logCollection:
      enabled: true

Para conocer todas las opciones de configuración, consulta las Especificaciones de configuración de Operator..

  1. Despliega el Datadog Agent:
kubectl apply -f /path/to/your/datadog-agent.yaml

Ejecutar Agents en un contenedor único

Disponible en Operator v1.4.0 o posterior

De manera predeterminada, Datadog Operator crea un Agent DaemonSet con pods que ejecutan diferentes contenedores del Agent. Datadog Operator v1.4.0 introduce una configuración que permite a los usuarios ejecutar Agents en un contenedor único. Para evitar la elevación de privilegios de todos los Agents en el contenedor único, esta característica solo se puede aplicar cuando system-probe o security-agent no son necesarios. Para obtener más información, consulta Ejecutar como usuario sin privilegios en la página Seguridad de datos del Agent.

Para habilitar esta característica, añade global.containerStrategy: single al manifiesto DatadogAgent:

  apiVersion: datadoghq.com/v2alpha1
  kind: DatadogAgent
  metadata:
    name: datadog
  spec:
    global:
      containerStrategy: single
      credentials:
        apiSecret:
          secretName: datadog-secret
          keyName: api-key
        appSecret:
          secretName: datadog-secret
          keyName: app-key
    features:
      apm:
        enabled: true
      logCollection:
        enabled: true
Con la configuración anterior, los pods del Agent se ejecutan como contenedores únicos con tres procesos del Agent. El valor predeterminado para global.containerStrategy es optimized y ejecuta cada proceso del Agent en un contenedor separado.

Nota: No se recomienda ejecutar varios procesos del Agent en un contenedor único en entornos orquestados como Kubernetes. Los pods que ejecutan varios procesos necesitan que un un administrador de procesos administre sus ciclos de vida, lo cual Kubernetes no puede controlar de manera directa y podría genera inconsistencias o conflictos en la administración del ciclo de vida del contenedor.

Validación

Utiliza kubectl get daemonset y kubectl get pod -owide para validar tu instalación.

En un clúster con dos nodos worker, deberías ver los pods de Agent que se han creado en cada nodo:

$ kubectl get daemonset
NAME            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
datadog-agent   2         2         2       2            2           <none>          5m30s

$ kubectl get pod -owide
NAME                                         READY   STATUS    RESTARTS   AGE     IP            NODE
agent-datadog-operator-d897fc9b-7wbsf        1/1     Running   0          1h      10.244.2.11   kind-worker
datadog-agent-k26tp                          1/1     Running   0          5m59s   10.244.2.13   kind-worker
datadog-agent-zcxx7                          1/1     Running   0          5m59s   10.244.1.7    kind-worker2

Limpieza

Los siguientes comandos sirven para eliminar todos los recursos de Kubernetes que hemos creado en esta guía:

kubectl delete datadogagent datadog
helm delete my-datadog-operator

Leer más