El Datadog Operator permite desplegar el Datadog Agent en Kubernetes y OpenShift e informa sobre el estado, el mantenimiento y los errores de despliegue en el estado de su recurso personalizado. Además, sus opciones de configuración de nivel superior limitan el riesgo de fallos en el proceso.

Requisitos previos

Para utilizar el Datadog Operator, es necesario cumplir los siguientes requisitos:

  • Versión >= 1.20.X del clúster de Kubernetes: los tests se llevaron a cabo en versiones >= 1.20.0. Sin embargo, también debería funcionar con las versiones >= v1.11.0. Debido a la compatibilidad limitada de la definición de recursos personalizados (CRD), el Operator podría no funcionar como es debido en versiones más antiguas.
  • Helm para desplegar el datadog-operator.
  • Interfaz de línea de comandos Kubectl para instalar el datadog-agent.

Desplegar el Datadog Operator

Para usar el Datadog Operator, despliégalo en tu clúster de Kubernetes. Luego, crea un recurso de Kubernetes para el DatadogAgent que contenga la configuración del despliegue de Datadog:

  1. Añade el repositorio de Helm de Datadog:
helm repo add datadog https://helm.datadoghq.com
  1. Instala el Datadog Operator:
helm install my-datadog-operator datadog/datadog-operator

Desplegar el Datadog Agent con el Operator

Después de desplegar el Datadog Operator, crea el recurso DatadogAgent que activa el despliegue del Datadog Agent en el clúster de Kubernetes. Al crear este recurso en el espacio de nombres del Datadog-Operator, el Agent se despliega como DaemonSet en cada Node de tu clúster.

Crea el manifiesto datadog-agent.yaml a partir de una de las siguientes plantillas:

Sustituye <DATADOG_API_KEY> y <DATADOG_APP_KEY> por tus claves de API y de aplicación de Datadog, y luego activa la instalación del Agent utilizando el siguiente comando:

$ kubectl apply -n $DD_NAMESPACE -f datadog-agent.yaml
datadogagent.datadoghq.com/datadog created

Puedes comprobar el estado del recurso DatadogAgent con:

kubectl get -n $DD_NAMESPACE dd datadog

NAME            ACTIVE   AGENT             CLUSTER-AGENT   CLUSTER-CHECKS-RUNNER   AGE
datadog-agent   True     Running (2/2/2)                                           110m

En un clúster con 2 nodos worker, deberías poder ver los pods del Agent creados en cada nodo.

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

$ kubectl get -n $DD_NAMESPACE 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

El siguiente comando borra todos los recursos Kubernetes creados con las instrucciones anteriores:

kubectl delete datadogagent datadog
helm delete datadog

Tolerancias

Actualiza tu archivo datadog-agent.yaml, utilizando la siguiente configuración para añadir la tolerancia en la Daemonset.spec.template de tu DaemonSet:

kind: DatadogAgent
apiVersion: datadoghq.com/v2alpha1
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>
      appKey: <DATADOG_APP_KEY>
  override:
    nodeAgent:
      image:
        name: gcr.io/datadoghq/agent:latest
      tolerations:
        - operator: Exists

Aplica esta nueva configuración:

$ kubectl apply -f datadog-agent.yaml
datadogagent.datadoghq.com/datadog updated

La actualización del DaemonSet se puede validar observando el nuevo valor deseado del pod:

$ kubectl get -n $DD_NAMESPACE daemonset
NAME            DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
datadog-agent   3         3         3       3            3           <none>          7m31s

$ kubectl get -n $DD_NAMESPACE pod
NAME                                         READY   STATUS     RESTARTS   AGE
agent-datadog-operator-d897fc9b-7wbsf        1/1     Running    0          15h
datadog-agent-5ctrq                          1/1     Running    0          7m43s
datadog-agent-lkfqt                          0/1     Running    0          15s
datadog-agent-zvdbw                          1/1     Running    0          8m1s

Leer más

Más enlaces, artículos y documentación útiles: