Se acaba de dar a conocer el lanzamiento de la nueva versión de Bottlerocket 1.2.0, la cual es una distribución de Linux que es desarrollada con la participación de Amazon para ejecutar contenedores aislados de manera eficiente y segura. Esta nueva versión se caracteriza por ser en mayor medida una versión de actualización de paquetes, aun que tambien llega con algunos cambios nuevos.
La distribución se caracteriza por proporciona una imagen de sistema indivisible actualizada de forma automática y atómica que incluye el kernel de Linux y un entorno de sistema mínimo que incluye solo los componentes necesarios para ejecutar contenedores.
Sobre Bottlerocket
El entorno hace uso del gestor del sistema systemd, la biblioteca Glibc, Buildroot, el gestor de arranque GRUB, el configurador de red wicked, el tiempo de ejecución containerd para el aislamiento de contenedores, la plataforma Kubernetes, AWS-iam-autenticador,y el agente de Amazon ECS.
Las herramientas de orquestación de contenedores se envían en un contenedor de administración separado que está habilitado de manera predeterminada y administrado a través de la API y el agente de AWS SSM. La imagen base carece de un shell de comandos, un servidor SSH y lenguajes interpretados (por ejemplo, sin Python o Perl): las herramientas para el administrador y las herramientas de depuración se mueven a un contenedor de servicios separado, que está deshabilitado de manera predeterminada.
La diferencia clave con respecto a distribuciones similares como Fedora CoreOS, CentOS/Red Hat Atomic Host es el enfoque principal en proporcionar la máxima seguridad en el contexto de fortalecer el sistema contra posibles amenazas, lo que dificulta la explotación de vulnerabilidades en los componentes del sistema operativo y aumenta el aislamiento de contenedores.
Los contenedores se crean utilizando los mecanismos estándar del kernel de Linux: cgroups, namespaces y seccomp. Para un aislamiento adicional, la distribución utiliza SELinux en modo de «aplicación».
La partición root se monta como de solo lectura y la partición de configuración /etc se monta en tmpfs y se restaura a su estado original después del reinicio. No se admite la modificación directa de archivos en el directorio /etc, como /etc/resolv.conf y /etc/containerd/config.toml, para guardar permanentemente la configuración, usar la API o mover la funcionalidad a contenedores separados. Para la verificación criptográfica de la integridad de la sección root, se utiliza el módulo dm-verity y si se detecta un intento de modificar los datos en el nivel del dispositivo de bloque, se reinicia el sistema.
La mayoría de los componentes del sistema están escritos en el lenguaje Rust, que proporciona medios para trabajar de forma segura con la memoria, lo que le permite evitar vulnerabilidades causadas por acceder a un área de memoria después de que se libera, desreferenciar punteros nulos y exceder los límites del búfer.
Principales novedades de Bottlerocket 1.2.0
En esta nueva versión de Bottlerocket 1.2.0 se han introducido una gran cantidad de actualizaciones de paquetes de los cuales se destacan las actualizaciones de las versiones y dependencias de Rust, host-ctr, la versión actualizada del contenedor de administración predeterminado y diversos paquetes de terceros.
Por la parte de las novedades se destaca de Bottlerocket 1.2.0 es que se ha añadido el soporte para espejos de registro de imágenes de contenedores, asi como la capacidad de usar certificados autofirmados (CA) y el parámetro para poder configurar el nombre de host.
Tambien se agregaron las configuraciones de topologyManagerPolicy y topologyManagerScope para kubelet, asi como el soporte para la compresión del kernel mediante el algoritmo zstd.
Por otra parte se proporcionó la capacidad de poder arrancar el sistema en máquinas virtuales VMware en el formato OVA (Open Virtualization Format).
De los demás cambios que se destacan de esta nueva versión:
- Versión actualizada de la distribución aws-k8s-1.21 con compatibilidad con Kubernetes 1.21.
- Soporte eliminado para aws-k8s-1.16.
- Se evita el uso de comodines para aplicar rp_filter a interfaces
- Se han movido las migraciones de v1.1.5 a v1.2.0
Finalmente si estás interesado en poder conocer más al respecto de esta nueva versión, puedes consultar los detalles en el siguiente enlace. Además de que tambien puedes consultar la información para su configuración y manejo aquí.