El host Linux de la infraestructura de contenedores de Azure se publica en GitHub.
por Simon Bisson
Piense en Microsoft y Linux, y es probable que piense en su trabajo en la construcción de un kernel de Linux optimizado para el Subsistema de Windows para Linux (WSL). Lanzado a través de la actualización de Windows, Microsoft admite todas las distribuciones de Linux WSL2, incluidas Ubuntu y SUSE.
Pero el kernel de WSL2 no es la única oferta de Linux de Microsoft. Hemos analizado algunos de los otros aquí en el pasado, incluido el Linux seguro para Azure Sphere . Otros incluyen la distribución de redes SONiC diseñada para su uso con hardware de Open Compute Project y utilizada por muchas nubes públicas y los principales servicios en línea, y los hosts para Azure ONE (Open Network Emulator) que se utilizan para validar nuevas implementaciones de redes para Azure.
Grupo de sistemas Linux de Microsoft
Con un número cada vez mayor de kernels y distribuciones de Microsoft Linux, ahora existe un Grupo de Sistemas Linux oficial que maneja gran parte del trabajo de Linux de la empresa. Esto incluye un kernel optimizado para Azure disponible como parches para muchas distribuciones comunes de Linux, optimizándolos para su uso con el hipervisor Hyper-V de Microsoft, y un conjunto de herramientas para ayudar a brindar cumplimiento basado en políticas de la integridad del sistema, lo que hace que las distribuciones sean más seguras y ayuden a administrar actualizaciones y parches en grandes propiedades de servidores Linux y máquinas virtuales.
El equipo lanzó recientemente una nueva distribución de Linux: CBL-Mariner . Aunque el lanzamiento es público, gran parte de su uso no lo es, ya que es parte de la infraestructura de Azure, se utiliza para sus servicios de red de borde y como parte de su infraestructura en la nube. El resultado es una distribución estrechamente enfocada y de bajo costo que se centra menos en lo que contiene y mucho más en lo que se ejecuta en ella.
Presentamos CBL-Mariner: el host de contenedor de Linux de Microsoft
Invertir en un Linux ligero como CBL-Mariner tiene mucho sentido, considerando las inversiones de Microsoft en tecnologías basadas en contenedores. La economía de la nube requiere que los hosts utilicen la menor cantidad de recursos posible, lo que permite que servicios como Azure obtengan una alta utilización. Al mismo tiempo, los contenedores de Kubernetes necesitan la menor sobrecarga posible, lo que permite la mayor cantidad posible de nodos por pod y permite que se lancen nuevos nodos lo más rápido posible.
Lo mismo ocurre con el hardware de borde, especialmente la próxima generación de nodos de borde diseñados para su uso con redes 5G. Aquí, como en la nube pública, las cargas de trabajo son lo más importante, acercándolas y los datos a los usuarios. Microsoft utiliza su creciente patrimonio de hardware de borde como parte de la red de entrega de contenido de Azure fuera de sus principales centros de datos de Azure, almacenando en caché el contenido de las aplicaciones web de Azure y de los servidores de archivos y videos alojados, con el objetivo de reducir la latencia cuando sea posible. Azure CDN es un componente clave de su servicio Azure Static Websites basado en Jamstack, páginas de alojamiento y JavaScript una vez publicado desde GitHub.
En el pasado, CoreOS de Red Hat solía ser el host preferido de contenedores de Linux, pero su reciente desaprobación significa que ya no es compatible. Cualquiera que lo use ha tenido que encontrar una alternativa. Microsoft ofrece Flatcar Linux CoreOS-fork para usuarios de Azure como parte de una asociación con los desarrolladores Kinvolk , pero tener su propia distribución para sus propios servicios garantiza que pueda actualizar y administrar sus instancias de host y contenedor en su propio horario. El desarrollo en público está disponible para cualquiera que quiera crear y usar sus propias compilaciones o que quiera contribuir con nuevas funciones y optimizaciones, por ejemplo, agregando soporte para nuevas funciones de red.
Ejecución de CBL-Mariner y contenedores
Fuera de la caja, CBL-Mariner solo tiene los paquetes básicos necesarios para admitir y ejecutar contenedores, adoptando un enfoque similar a CoreOS. En el fondo, los contenedores de Linux son un espacio de usuario aislado. Mantener los recursos compartidos al mínimo reduce la exposición de seguridad del sistema operativo host al asegurarse de que los contenedores de aplicaciones no puedan tener dependencias en él. Si está utilizando CBL-Mariner en sus propios contenedores, asegúrese de haber probado las imágenes públicas de Docker antes de implementarlas, ya que es posible que no contengan los paquetes adecuados. Es posible que deba tener sus propias imágenes base en su lugar como parte de los archivos docker de su aplicación.
CBL-Mariner utiliza herramientas familiares de Linux para agregar paquetes y administrar actualizaciones de seguridad, ofreciendo actualizaciones como paquetes RPM o como imágenes completas que se pueden implementar según sea necesario. El uso de RPM le permite agregar sus propios paquetes a una imagen base de CBL-Mariner para admitir funciones y servicios adicionales según sea necesario.
Comenzar con CBL-Mariner puede ser tan simple como iniciar un servicio de Azure. Pero si desea experiencia práctica o desea contribuir al proyecto, todo el código fuente se encuentra actualmente en GitHub, junto con las instrucciones para construir sus propias instalaciones . Los requisitos previos para una compilación en Ubuntu 18.04 incluyen el lenguaje Go, las utilidades QEMU (Quick EMUlator) y rpm .
Cree su propia instalación usando el repositorio de GitHub
Tiene varias opciones diferentes para construir desde la fuente . Comience por verificar la fuente de GitHub, haciendo un clon local del repositorio del proyecto. Hay varias ramas disponibles, pero para una primera compilación, debe elegir la rama estable actual. Desde aquí puede crear las herramientas de Go para el proyecto antes de descargar las fuentes.
Para compilaciones rápidas tiene dos opciones, las cuales usan paquetes prediseñados y ensamblan una distribución a partir de ellos. El primero, para instalaciones completas, crea un archivo ISO listo para instalar. El segundo, para usar CBL-Mariner como host contenedor, crea un archivo VHDX listo para usar con una máquina virtual para usar con Hyper-V. Una opción alternativa crea una imagen de contenedor que se puede utilizar como fuente para sus archivos dockerfiles basados en Mariner, brindándole todo lo que necesita para construir y ejecutar contenedores compatibles con sus aplicaciones.
Si prefiere compilar desde el código fuente, la opción está disponible, aunque las compilaciones serán considerablemente más lentas que usar paquetes precompilados. Sin embargo, esto le permitirá apuntar a CPU alternativas, por ejemplo, compilando una versión que funcione con la nueva generación de hardware de borde basado en ARM similar al que se usa para las instancias de Graviton de AWS. Puede iniciar toda la cadena de herramientas de compilación para asegurarse de tener control sobre todo el proceso de compilación. El proceso de compilación completo incluso se puede utilizar para compilar paquetes compatibles, con los archivos principales enumerados en un archivo de configuración JSON.
Una vez construido, puede comenzar a configurar las funciones de CBL-Mariner. Fuera de la caja, estos incluyen un firewall basado en iptables, soporte para actualizaciones firmadas y un kernel reforzado . Se pueden configurar características opcionales al mismo tiempo, con herramientas para mejorar el aislamiento de procesos y cifrar el almacenamiento local, características importantes para un host de contenedor en un entorno de múltiples inquilinos donde necesita proteger los datos locales.
El resultado es un reemplazo efectivo para CoreOS, y me gustaría verlo disponible para los usuarios de Azure, así como para los propios equipos de Microsoft. Es posible que CBL-Mariner no tenga la madurez de otros Linux enfocados en contenedores, pero ciertamente tiene suficiente soporte para convertirlo en una herramienta creíble para su uso en arquitecturas de red de borde y nube híbrida, donde está ejecutando código en sus propios servidores de borde y en la nube de Microsoft. Si Microsoft no lo convierte en una opción, al menos puede construirlo usted mismo.
Fuente: https://www.infoworld.com/article/3596347/microsoft-adds-a-new-linux-cbl-mariner.html