Empezando con el Datadog Operator
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
- Instala el Datadog Operator con Helm:
helm repo add datadog https://helm.datadoghq.com
helm install my-datadog-operator datadog/datadog-operator
- 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.
- 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..
- 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
Additional helpful documentation, links, and articles: