Red Hat OpenShift es una plataforma de aplicaciones en contenedores de código abierto basada en el orquestador de contenedores de Kubernetes para el desarrollo y despliegue de aplicaciones empresariales.
Este README describe la configuración necesaria para permitir la recopilación de métricas específicas de OpenShift en el Agent. Los datos aquí descritos son recopilados por el check de kubernetes_apiserver. Debes configurar el check para recopilar las métricas openshift.*.
Configuración
Instalación
Esta configuración central es compatible con OpenShift 3.11 y OpenShift 4, pero funciona mejor con OpenShift 4.
Como alternativa, puede utilizarse Datadog Operator para instalar y gestionar el Datadog Agent. El Datadog Operator puede instalarse mediante el OperatorHub de OpenShift.
Configuración de las restricciones del contexto de seguridad
Si estás desplegando el Datadog Agent utilizando cualquiera de los métodos vinculados en las instrucciones de instalación anteriores, debes incluir restricciones de contexto de seguridad (SCC) para el Agent y el Cluster Agent para recopilar datos. Sigue las instrucciones que se indican a continuación en relación con tu despliegue.
Para obtener instrucciones sobre cómo instalar el Datadog Operator y el recurso DatadogAgent en OpenShift, consulta la Guía de instalación de OpenShift.
Si despliegas el Operator con Operator Lifecycle Manager (OLM), los SCC predeterminados necesarios de OpenShift se asocian automáticamente a la cuenta de servicio datadog-agent-scc. A continuación, puedes desplegar los componentes de Datadog con la CustomResourceDefinition DatadogAgent, haciendo referencia a esta cuenta de servicio en los pods del Node Agent y Cluster Agent.
Puedes crear el SCC directamente dentro de tu values.yaml del Datadog Agent. Añade los siguientes parámetros de bloque en la sección agents y clusterAgent para crear sus respectivos SCC.
El método de ingesta recomendado para DogStatsD, APM y logs consiste en vincular el Datadog Agent a un puerto de host. De esta forma, la IP de destino es constante y fácilmente detectable por tus aplicaciones. La SCC por defecto de OpenShift no permite la vinculación al puerto de host. Puedes configurar el Agent para que escuche en su propia IP, pero tendrás que gestionar la detección de esa IP desde tu aplicación.
El Agent permite trabajar en un modo de ejecución de sidecar, para habilitar la ejecución del Agent en el pod de tu aplicación para facilitar la detección.
Host
Añade el permiso allowHostPorts al pod con el SCC estándar hostnetwork o hostaccess, o creando uno propio. En este caso, puedes añadir los enlaces de puerto relevantes en las especificaciones de tu pod:
SCC personalizado de Datadog para todas las funciones
El Helm Chart y Datadog Operator gestionan el SCC por ti de forma predeterminada. Para gestionarlo tú mismo en su lugar, asegúrate de incluir las configuraciones correctas en función de las características que hayas habilitado.
Si SELinux está en modo permisivo o deshabilitado, habilita el SCC hostaccess para beneficiarte de todas las características.
Si SELinux está en modo obligatorio, es recomendado conceder el tipo spc_t al pod datadog-agent. Para desplegar el Agent, puedes utilizar el siguiente SCC datadog-agent que se puede aplicar después de crear la cuenta de servicio datadog-agent. Concede los siguientes permisos:
allowHostPorts: true: vincula las entradas de DogStatsD/APM/logs a la IP del nodo.
allowHostPID: true: activa la Detección de origen para las métricas de DogStatsD enviadas por Unix Socket.
volumes: hostPath: accede al socker de Docker y a las carpetas proc y cgroup de host, para la recopilación de métricas.
OpenShift 4.0+: Si has utilizado el instalador de OpenShift en un proveedor de nube compatible, debes desplegar el SCC con allowHostNetwork: true en el manifiesto scc.yaml, así como hostNetwork: true en la configuración del Agent para obtener etiquetas (tags) de host y alias. Por lo demás, el acceso a los servidores de metadatos desde la red de pod está restringido.
Nota: El socket de Docker es propiedad del grupo raíz, por lo que es posible que tengas que elevar los privilegios del Agent para obtener métricas de Docker. Para ejecutar el proceso del Agent como usuario raíz, puedes configurar tu SCC con lo siguiente:
runAsUser:type:RunAsAny
Recopilación de logs
La recopilación de logs del Datadog Agent se configura en OpenShift en gran medida igual que otros clústeres de Kubernetes. El Datadog Operator y Helm Chart se montan en el directorio /var/log/pods, que el pod de Datadog Agent utiliza para monitorizar los logs de los pods y contenedores en sus respectivos hosts. Sin embargo, con el Datadog Operator, es necesario aplicar opciones de SELinux adicionales para dar al Agent permisos para leer estos archivos de log.
En Kubernetes, hay tres opciones principales para enrutar los datos desde el pod de aplicación al pod del Datadog Agent: el Unix Domain Socket (UDS), la opción HostIP:HostPort (TCP/IP) y el servicio de Kubernetes. El Datadog Operator y Helm Chart utilizan por defecto la opción de UDS por ser la más eficiente en cuanto a recursos. Sin embargo, esta opción no funciona bien en OpenShift, ya que requiere opciones elevadas de SCC y SELinux, tanto en el pod del Agent como en el pod de aplicaciones.
Datadog recomienda deshabilitar la opción de UDS explícitamente para evitar esto y para evitar que el Admission Controller (Controlador de admisión) inyecte esta configuración.