Ingeniería de plataforma se está convirtiendo en un concepto convincente para las empresas, ya que dedican cantidades cada vez mayores de recursos a nativo de la nube desarrollo de aplicaciones. No importa si estás usando el tuyo propio Kubernetes instancias en sus centros de datos, o trabajando con entornos administrados en nubes públicas, necesitará comprender cómo funcionan, aprovechando una nueva generación de herramientas de seguridad y observabilidad.
Las herramientas de orquestación de contenedores como Kubernetes son difíciles de gestionar 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 observabilidad, pero cada vez está más claro que necesitamos una forma de salir del entorno de orquestación y, al mismo tiempo, seguir 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.
Mirando desde dentro del kernel de Linux
En el pasado, eso habría implicado trabajar con código a nivel de kernel, agregar módulos de kernel propios o 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 nube, es poco probable que tenga los permisos o el acceso necesarios.
Por suerte, tenemos una opción que evita toda esa complejidad, dándonos acceso controlado a las operaciones del kernel, en 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, rastreen operaciones clave y permitan que aplicaciones externas como Prometheus, Cilium y Retina registren 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.
Presentando al inspector
Kinvolk, filial de Microsoft es mejor conocido 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 eBPFincluido como un conjunto de “dispositivos” del kernel con servicios de visualización y gestión del espacio de usuario.
El nombre del detective francés mitad robot, el proyecto Inspector Gadget ofrece un conjunto cada vez mayor de dispositivos, así como un marco para desarrollar el suyo propio. El mezcla 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 generar 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.
Mientras que herramientas como falcó y Retina están destinados a 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é va mal y por qué, y luego explorar las posibles causas, todo desde la línea de comandos 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 utilizar Inspektor Gadget solo o mediante una herramienta como Microsoft Defender para contenedores, que recientemente 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.
Ejecutando Inspektor Gadget en su clúster
Primeros pasos con 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 usar 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 es necesario 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 resultar útil para monitorear instalaciones experimentales y clústeres locales.
Una vez instalado, puede utilizar 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 kernel. 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 leerlo mediante el código del gadget del espacio de usuario, 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 una Dispositivo Prometeo 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 dispositivos 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.
Ampliando los gadgets
De manera útil, Inspektor Gadget puede funcionar 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 hacer frente a 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 muchas cosas que me gustan 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.