La ingeniería de plataformas se está convirtiendo en un concepto atractivo para las empresas, ya que dedican cantidades cada vez mayores de recursos al desarrollo de aplicaciones nativas de la nube. No importa si está utilizando sus propias instancias de Kubernetes en sus centros de datos o trabajando con entornos administrados en nubes públicas, necesitará comprender cómo funcionan y aprovechar una nueva generación de observabilidad. y herramientas de seguridad. Las herramientas de orquestación de contenedores como Kubernetes son difíciles de administrar con herramientas tradicionales. A medida que crean instancias de nuevos contenedores en función del uso de recursos o en respuesta a eventos, su comportamiento no es predecible. Si está utilizando una herramienta de monitoreo basada en agentes, los agentes deben registrarse en las herramientas de monitoreo cuando los contenedores se inician y cancelar el registro cuando los contenedores se detienen. El proceso añade complejidad a las herramientas y es difícil utilizar los datos resultantes para obtener un análisis completo de la causa raíz o rastrear una actividad anómala. Hay conceptos nativos de la nube que ayudan, como la observabilidad, pero cada vez está más claro que necesitamos una manera de salir del entorno de orquestación y, al mismo tiempo, realizar un seguimiento de sus operaciones informáticas y de red. Con contenedores alojados en hipervisores modernos o demonios de contenedores de bajo nivel, necesitamos una forma de monitoreo de sistemas de nivel inferior. Ver desde el interior del kernel de Linux En el pasado, eso habría implicado trabajar con código a nivel de kernel, agregando código propio o de terceros. módulos del kernel de terceros y recompilar el kernel de Linux cada vez que aparece una nueva herramienta o una actualización. Si alguna vez compiló Linux desde cero o escribió un módulo del kernel, sabrá que no es la tarea más fácil y, a menudo, requiere mucho tiempo. Si está utilizando una imagen lista para ejecutar de un proveedor de la nube, es poco probable que tenga los permisos o el acceso necesarios. Afortunadamente, tenemos una opción que evita toda esa complejidad, brindándonos acceso controlado a las operaciones del kernel, en la forma de eBPF, filtros de paquetes Berkeley extendidos. Con eBPF podemos inyectar código en el kernel de Linux (y Windows), utilizando un verificador para garantizar la seguridad. Los ganchos en el kernel generan eventos que activan programas eBPF, permitiendo el acceso a redes y otras operaciones de bajo nivel. Este enfoque permite que las herramientas de monitoreo obtengan datos sobre las operaciones del entorno alojado de Kubernetes, rastreando operaciones clave y permitiendo aplicaciones externas como Prometheus, Cilium. y Retina para registrar los datos, vinculándolos a contenedores individuales y a las aplicaciones orquestadas por Kubernetes. Con la compatibilidad con eBPF en el kernel de Linux, puede usarlo para monitorear no solo instancias físicas en su propio hardware, sino también hosts de máquinas virtuales en un servicio en la nube. Presentamos la filial de InspektorMicrosoft Kinvolk es mejor conocida por su distribución Flatcar Linux, pero se está convirtiendo rápidamente en uno de los centros de excelencia de código abierto de Microsoft. Mientras que Deis Labs se centró en el desarrollo nativo de la nube, Kinvolk está más alineado con la ingeniería y las operaciones de la plataforma, proporcionando herramientas como la interfaz de usuario de Headlamp Kubernetes. Durante los últimos cinco años, Kinvolk ha estado trabajando en un conjunto de herramientas de monitoreo y captura de eBPF, incluidas como un conjunto de «dispositivos» del núcleo con administración del espacio de usuario y servicios de visualización. El nombre del detective francés Inspektor, que es parte robot. El proyecto Gadget ofrece un conjunto cada vez mayor de gadgets, así como un marco para desarrollar el suyo propio. La combinación de gadgets abarca desde herramientas que auditan sus configuraciones de Kubernetes hasta otras que capturan información de rendimiento sobre su clúster, ya sea para crear perfiles o para análisis en tiempo real. El conjunto más útil le permite rastrear una serie de métricas clave, incluidas las operaciones de red de bajo nivel. Puede que su problema no sea el DNS, pero Inspektor Gadget puede ayudarle a demostrar que no lo es. Si bien herramientas como Falco y Retina están diseñadas para observaciones a largo plazo de una infraestructura de Kubernetes, una instalación independiente de Inspektor Gadget es más útil para investigaciones y exploraciones ad hoc. Eso no es malo. Los ingenieros de plataformas necesitan herramientas que puedan usarse rápidamente para diagnosticar problemas específicos, sin tener que invertir tiempo en instalar y configurar una solución de observabilidad completa. Con Inspektor Gadget puede obtener la información necesaria para mostrar qué está fallando y por qué, y luego explorar posibles causas, todo desde la línea de comando de Kubernetes. Los datos que obtiene, aunque son de bajo nivel, están asociados con espacios de nombres en su clúster de Kubernetes, lo que le permite aislar rápidamente pods y contenedores específicos. Puede usar Inspektor Gadget solo o mediante una herramienta como Microsoft Defender para contenedores, que Recientemente se agregó un componente de sensor que utiliza las herramientas de Inspektor Gadget para buscar amenazas como fugas de contenedores. Estos son algunos de los compromisos más riesgosos para Kubernetes, ya que permiten que el código malicioso rompa el aislamiento del contenedor y acceda al sistema operativo host. Microsoft está utilizando Inspektor Gadget para reemplazar las herramientas de Defender for Containers que anteriormente funcionaban con las sondas eBPF de Sysdig. Ejecutar Inspektor Gadget en su clúster Comenzar a usar Inspektor Gadget es bastante fácil. El kit de herramientas instala un complemento kubectl y un conjunto de demonios en su clúster de Kubernetes. Puede utilizar la herramienta de instalación krew para instalar las herramientas kubectl, o instalarla manualmente descargando un binario o compilando el código fuente y luego agregando el ejecutable resultante a su ruta. Una vez que tenga instalada la herramienta de línea de comandos del gadget, puede implementar el daemonset usando su comando de implementación, creando un pod para sus gadgets y aplicando los controles de seguridad adecuados. Puede implementar el daemonset en todo el clúster o en uno o varios nodos específicos. Luego se puede configurar para que comience junto con nuevos contenedores. Para desinstalar, simplemente use el comando undeploy. No necesita instalar Inspektor Gadget en Kubernetes. Se puede instalar como una aplicación Linux en un servidor host, lo que le permite rastrear contenedores desde fuera de Kubernetes. Si bien este enfoque no es adecuado para Kubernetes alojado en la nube, puede ser útil para monitorear instalaciones experimentales y clústeres locales. Una vez instalado, puede usar los gadgets de Inspektor Gadget para instalar el código eBPF en el kernel del sistema operativo host, adjuntando los gadgets a funciones específicas del núcleo. El código eBPF se ejecuta cuando se realizan llamadas al sistema específicas, lo que permite que el dispositivo rastree la operación. Los resultados del seguimiento se escriben en los buffers del kernel y luego el código del gadget del espacio de usuario los lee nuevamente, mostrando los datos transmitidos a través de la CLI de Kubernetes. En segundo plano, un administrador de seguimiento realiza un seguimiento de los diversos dispositivos en uso, con un mapa de los contenedores y espacios de nombres a los que están asociados, de modo que los datos se asocian directamente con un contenedor específico. Los resultados se filtran por contenedor y por evento, lo que le brinda una manera de profundizar rápidamente en los eventos que desea monitorear. Inspektor Gadget proporciona un gadget de Prometheus que entrega métricas a una instancia de Prometheus, lo que permite visualizarlas con herramientas como Grafana o analizarlas con otras herramientas de administración de Kubernetes. La compatibilidad con Prometheus le permite ejecutar gadgets en segundo plano, especialmente si utiliza rastreadores de red o herramientas de creación de perfiles para obtener una imagen del rendimiento general de una aplicación y un clúster, así como de la red subyacente. Ampliar los gadgetsÚtilmente Inspektor Gadget Puede trabajar con otros programas eBPF, agregando información adicional a consultas básicas. Puede escribir una sonda eBPF simple para buscar un evento específico y luego llamar a Inspektor Gadget para agregar detalles del espacio de nombres de montaje actual al registro de eventos. De esta manera, puede agregar código rápidamente para buscar nuevas vulnerabilidades críticas, lo que le permitirá pasar esos datos a su aplicación de monitoreo a través de la CLI de Inspektor Gadget. Herramientas como Inspektor Gadget son importantes para lidiar con la naturaleza impredecible de las aplicaciones nativas de la nube. Al utilizar eBPF, podemos profundizar en las complejas mallas de red y comprender exactamente qué sucede cuando los contenedores se comunican entre sí, lo que nos permite construir la infraestructura adecuada para nuestro código. Hay mucho que me gusta aquí, tanto en la forma en que Inspektor Gadget se integra con las herramientas familiares de Kubernetes como en cómo se puede ampliar con sus propios dispositivos para abordar sus propios problemas. A medida que Kubernetes madura, es importante tener formas de ver lo que sucede bajo el capó. . Sin esos datos, no podemos estar seguros de que estamos entregando las arquitecturas de nivel empresarial que son esenciales para respaldar nuestro código y nuestros usuarios. eBPF e Inspektor Gadget son una forma importante de lograr esa madurez, junto con herramientas de observabilidad que nos permiten interpretar y analizar los datos y ofrecer una plataforma nativa de la nube manejable. Copyright © 2024 IDG Communications, Inc.