Este documento contiene información detallada sobre la instalación del Datadog Operator. Para obtener instrucciones básicas de instalación del Agent en Kubernetes, consulta Instalar el Agent en Kubernetes.

Requisitos previos

  • Versión >= v1.20.X del clúster de Kubernetes: los tests se realizaron en versiones >= 1.20.0 de Kubernetes. Se espera que funcione en las versiones >= v1.11.0, pero para versiones anteriores el Operator puede no funcionar como se espera debido al soporte limitado de CRD.
  • Helm para desplegar el Datadog Operator
  • CLI de kubectl para instalar el Datadog Agent

Instalación del Datadog Operator con Helm

Puedes desplegar el Datadog Operator en tu clúster utilizando el Helm chart de Datadog Operator:

helm repo add datadog https://helm.datadoghq.com
helm install my-datadog-operator datadog/datadog-operator

Para personalizar la configuración del Operator, crea un archivo values.yaml que pueda anular los valores predeterminados del Helm chart.

Por ejemplo:

image:
  tag: 1.2.0
datadogMonitor:
  enabled: true

A continuación, para actualizar la versión de Helm, ejecuta:

helm upgrade my-datadog-operator datadog/datadog-operator -f values.yaml

Añadir credenciales

  1. Crea un secreto de Kubernetes que contenga tus claves de API y de aplicación.

    export DD_API_KEY=<YOUR_API_KEY>
    export DD_APP_KEY=<YOUR_APP_KEY>
    
    kubectl create secret generic datadog-operator-secret --from-literal api-key=$DD_API_KEY --from-literal app-key=$DD_APP_KEY
    
  2. Haz referencia a este secreto en tu archivo values.yaml.

    apiKeyExistingSecret: datadog-operator-secret
    appKeyExistingSecret: datadog-operator-secret
    image:
      tag: 1.2.0
    datadogMonitor:
      enabled: true
    
  3. Actualiza la versión de Helm.

    helm upgrade my-datadog-operator datadog/datadog-operator -f values.yaml
    

Instalación del Datadog Operator con Operator Lifecycle Manager

Las instrucciones para desplegar el Datadog Operator con Operator Lifecycle Manager (OLM) están disponibles en operatorhub.io.

Anular la configuración predeterminada del Operator con OLM

El marco Operator Lifecycle Manager permite anular la configuración predeterminada del Operator. Consulta Configuración de la suscripción para consultar la lista de los parámetros de configuración de la instalación admitidos.

Por ejemplo, la siguiente Subscription del Operator Lifecycle Manager cambia los recursos del pod del Datadog Operator:

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: my-datadog-operator
  namespace: operators
spec:
  channel: stable
  name: datadog-operator
  source: operatorhubio-catalog
  sourceNamespace: olm
  config:
    resources:
      requests:
        memory: "250Mi"
        cpu: "250m"
      limits:
        memory: "250Mi"
        cpu: "500m"

Añadir credenciales

  1. Crea un secreto de Kubernetes que contenga tus claves de API y de aplicación.

    export DD_API_KEY=<YOUR_API_KEY>
    export DD_APP_KEY=<YOUR_APP_KEY>
    
    kubectl create secret generic datadog-operator-secret --from-literal api-key=$DD_API_KEY --from-literal app-key=$DD_APP_KEY
    
  2. Añade referencias al secreto en la instancia del recurso Subscription del Datadog Operator.

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: my-datadog-operator
      namespace: operators
    spec:
      channel: stable
      name: datadog-operator
      source: operatorhubio-catalog
      sourceNamespace: olm
      config:
        env:
          - name: DD_API_KEY
            valueFrom:
              secretKeyRef: 
                 key: api-key
                 name: datadog-operator-secret
          - name: DD_APP_KEY
            valueFrom:
              secretKeyRef: 
                key: app-key
                name: datadog-operator-secret
    

Despliegue del recurso personalizado DatadogAgent gestionado por el Operator

Después de desplegar el Datadog Operator, crea el recurso DatadogAgent que activa el despliegue del Datadog Agent, Cluster Agent y ejecutores de checks de clúster (si se utiliza) en tu clúster de Kubernetes. El Datadog Agent se despliega como un DaemonSet, ejecutando un pod en cada nodo de tu clúster.

  1. Crea un secreto de Kubernetes con tus claves de API y de aplicación.

    export DD_API_KEY=<YOUR_API_KEY>
    export DD_APP_KEY=<YOUR_APP_KEY>
    
    kubectl create secret generic datadog-secret --from-literal api-key=<DATADOG_API_KEY> --from-literal app-key=<DATADOG_APP_KEY>
    
  2. Crea un archivo con las especificaciones de tu configuración de despliegue DatadogAgent. La configuración más simple es:

    apiVersion: datadoghq.com/v1alpha1
    kind: DatadogAgent
    metadata:
      name: datadog
    spec:
      credentials:
        apiSecret:
          secretName: datadog-secret
          keyName: api-key
        appSecret:
          secretName: datadog-secret
          keyName: app-key
    
  3. Despliega el Datadog Agent con el archivo de configuración anterior:

    kubectl apply -f /path/to/your/datadog-agent.yaml
    

En un clúster con dos nodos de worker, deberías ver los pods del Agent creados 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

Tolerancias

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

apiVersion: datadoghq.com/v1alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  credentials:
    apiSecret:
      secretName: datadog-secret
      keyName: api-key
    appSecret:
      secretName: datadog-secret
      keyName: app-key
  agent:
    config:
      tolerations:
       - operator: Exists

Aplica esta nueva configuración:

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

Valida la actualización de DaemonSet mirando el nuevo valor de pod desired:

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

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

Configuración

Para obtener una lista completa de las opciones de configuración, consulta la especificación de configuración.

Instalar el complemento kubectl

Consulta la documentación del complemento kubectl.

Utiliza una imagen personalizada del Datadog Operator

Consulta las instrucciones para crear una imagen de contenedor personalizada del Datadog Operator basada en una versión oficial en Imágenes de contenedor personalizadas del Operator.

Imágenes del Datadog Operator con Helm charts

Para instalar una imagen personalizada del Datadog Operator utilizando el Helm chart, ejecuta lo siguiente:

helm install my-datadog-operator --set image.repository=<custom-image-repository> --set image.tag=<custom-image-tag> datadog/datadog-operator

Limpieza

El siguiente comando elimina todos los recursos de Kubernetes creados por el Datadog Operator y los DatadogAgent datadog vinculados.

kubectl delete datadogagent datadog

Este comando muestra datadogagent.datadoghq.com/datadog deleted.

A continuación, puedes eliminar el Datadog Operator con el comando helm delete:

helm delete my-datadog-operator