Preguntas frecuentes sobre Bottlerocket

Aspectos generales

Bottlerocket es una distribución de Linux patrocinada por AWS y compatible con este, diseñada específicamente para alojar cargas de trabajo de contenedores. Gracias a Bottlerocket, es posible mejorar la disponibilidad de las implementaciones en contenedores y reducir los costos operativos mediante la automatización de las actualizaciones de la infraestructura de contenedores. Bottlerocket incluye únicamente el software esencial para ejecutar contenedores, lo que mejora el uso de los recursos, reduce la superficie expuesta a ataques de seguridad y disminuye los gastos generales de administración. También se integra con los orquestadores de contenedores, como Kubernetes y Amazon ECS, para reducir aún más la carga administrativa y operativa mientras se actualizan los hosts de contenedores en un clúster.

Bottlerocket está disponible en todas las regiones comerciales de AWS, GovCloud y en las regiones de AWS en China. Bottlerocket es el sistema operativo predeterminado para EKS Anywhere en VMware vSphere y bare metal. Bottlerocket también se puede usar de forma local para nodos de trabajo de Kubernetes en VMware, así como también con EKS Anywhere para ese mismo tipo de nodos en bare metal.

a) Mayor tiempo de actividad con un menor costo operativo y menor complejidad de administración: al incluir únicamente los componentes necesarios para ejecutar contenedores, Bottlerocket requiere una presencia de recursos menor y tiempos de inicio más cortos, a la vez que la superficie expuesta a ataques de seguridad es menor en comparación con Linux. Esta menor presencia ayuda a reducir los costos porque disminuye el uso de recursos de almacenamiento, informáticos y de redes. El uso de primitivas de contenedor (en lugar de administradores de paquetes) para ejecutar software reduce los gastos generales de administración.

b) Mejor seguridad gracias a las actualizaciones automáticas del sistema operativo: las actualizaciones de Bottlerocket se aplican como una sola unidad que se puede revertir si es necesario, lo que elimina el riesgo de actualizaciones “fallidas” que pueden dejar el sistema en un estado inutilizable. Es común que se presenten errores de actualización en los sistemas operativos de uso general, debido a los errores irrecuperables que se producen durante las actualizaciones paquete por paquete. En Bottlerocket, las actualizaciones de seguridad se pueden aplicar automáticamente tan pronto como estén disponibles de una manera mínimamente disruptiva y se pueden revertir si se producen errores.

c) Código abierto y disponibilidad universal: un modelo de desarrollo abierto permite a los clientes, socios y a todas las partes interesadas hacer cambios en el código y en el diseño de Bottlerocket.

d) Soporte de excelente calidad: el uso de las compilaciones de Bottlerocket proporcionadas por AWS en Amazon EC2 está cubierto por los mismos planes de AWS Support, que también cubren los servicios de AWS, como Amazon EC2, Amazon EKS o Amazon ECR.

Amazon Linux es un sistema operativo de uso general que sirve para ejecutar una amplia gama de aplicaciones que se empaquetan con el administrador de paquetes RPM o con contenedores. Amazon Linux está optimizado para ofrecer la posibilidad de configurar cada instancia según sea necesario para su carga de trabajo mediante herramientas tradicionales, como yum, ssh, tcpdump o netconf. Bottlerocket, por otro lado, está diseñado específicamente para ejecutar contenedores y permite administrar un gran número de hosts de contenedores de forma idéntica y automatizada. En concreto, Bottlerocket se diferencia de Amazon Linux en los siguientes aspectos:

  • Bottlerocket no dispone de un administrador de paquetes y el software únicamente se puede ejecutar como contenedores. Las actualizaciones de Bottlerocket se aplican y se pueden revertir en un solo paso atómico, lo que reduce los errores de actualización.
  • El mecanismo principal para administrar los hosts de Bottlerocket es usar un orquestador de contenedores, como Kubernetes. A diferencia de Amazon Linux, el inicio de sesión en instancias individuales de Bottlerocket está previsto como una operación poco frecuente destinada a la depuración avanzada y la resolución de problemas.

Los principales componentes de Bottlerocket son:

  • Sistema operativo mínimo que incluye el kernel de Linux, el software del sistema y containerd como tiempo de ejecución del contenedor.
  • Mecanismo de actualización atómica para aplicar y revertir las actualizaciones del sistema operativo en un solo paso.
  • Integraciones con orquestadores de contenedores, como Kubernetes para administrar y orquestar las actualizaciones.
  • “Contenedor de administración” que se puede ejecutar opcionalmente para la resolución de problemas y la depuración avanzadas.

Las compilaciones de Bottlerocket proporcionadas por AWS están disponibles sin costo alguno. Solo paga por las instancias de EC2 que usa.

Sí, la admite. Bottlerocket usa los precios de los tipos de instancia de Amazon EC2 Linux o Unix. Se admite la facturación por segundo cuando se usa una versión de Bottlerocket proporcionada por AWS de forma nativa en EC2. Tenga en cuenta que los productos de AWS Marketplace creados con Bottlerocket como base pueden tener un costo por hora asociado.

Únase a la comunidad de Bottlerocket en Meetup para conocerla e informarse sobre los eventos de Bottlerocket más recientes. Se programan reuniones con regularidad.

Usar Bottlerocket

AWS proporciona una imagen de máquina de Amazon (AMI) para Bottlerocket que puede usar para ejecutarla en los tipos de instancia de EC2 compatibles desde la consola de AWS, la CLI y el SDK. AWS proporcionará versiones de Bottlerocket preconfiguradas para su uso con EKS, ECS, VMware y EKS Anywhere en bare metal. Puede usar el orquestador para actualizar y administrar el sistema operativo con interrupciones mínimas sin necesidad de iniciar sesión en cada instancia de dicho sistema.

Puede ejecutar aplicaciones en contenedores en una instancia de Bottlerocket a través de su orquestador. También puede incluir su software y scripts de inicio en Bottlerocket durante la personalización de la imagen. Consulte la documentación sobre Bottlerocket para obtener más información.

Para implementar y mantener Bottlerocket, siga los siguientes pasos:

  • Paso 1: puede implementar Bottlerocket de la misma manera que cualquier otro sistema operativo en una máquina virtual. En AWS, puede implementar Bottlerocket en instancias de EC2 desde la consola de administración de AWS, la API y la CLI de AWS. Debe proporcionar los detalles de la configuración a través de los datos de usuario de cada instancia de Bottlerocket para inscribirse en un clúster de Amazon EKS.
  • Paso 2: para operar Bottlerocket con su orquestador, es necesario implementar un componente de integración en su clúster. El componente de integración permite al orquestador ejecutar reinicios, revertir actualizaciones y reemplazar contenedores de una manera mínimamente disruptiva para las actualizaciones continuas.

Las actualizaciones de Bottlerocket se descargan automáticamente de los repositorios preconfigurados de AWS cuando están disponibles. Es necesario reiniciar Bottlerocket para aplicar las actualizaciones. Esta acción se puede iniciar manualmente o puede administrarse a través de un orquestador, como Kubernetes. Debe seleccionar el mecanismo adecuado para gestionar los reinicios en función de la tolerancia de las aplicaciones a estos y de las necesidades operativas. Si se trata de una aplicación sin estado y resistente a los reinicios, estos últimos se pueden realizar inmediatamente después de la descarga de las actualizaciones. Si ejecuta cargas de trabajo tradicionales con estado (por ejemplo, bases de datos, aplicaciones de línea de negocio de larga duración, etc.) en contenedores que no son resistentes a los reinicios, es necesario asegurarse de que el estado se conserva antes de los reinicios.

Los orquestadores pueden administrar los reinicios de Bottlerocket mediante el vaciado y el reinicio de los contenedores en todos los hosts para habilitar las actualizaciones continuas en un clúster y reducir las interrupciones. Las actualizaciones de Bottlerocket también se pueden revertir de forma segura en caso de que se produzcan errores mediante orquestadores compatibles o a través de una acción manual. Consulte la documentación de Bottlerocket donde encontrará los pasos a seguir para implementar y utilizar el “operador de actualizaciones de Bottlerocket” en clústeres de Amazon EKS y de Amazon ECS.

Control de versiones y variantes

Las compilaciones de Bottlerocket proporcionadas por AWS siguen un esquema de control de versiones semántico “principal.secundaria.parche”. Se publicarán versiones secundarias de Bottlerocket varias veces al año con cambios, como la compatibilidad con nuevas plataformas de EC2, la compatibilidad con nuevos agentes orquestadores y la actualización de componentes de código abierto. El esquema de la versión indicará si las actualizaciones contienen cambios trascendentales.

Una variante es una compilación de Bottlerocket que admite diferentes funciones o características de integración. AWS proporciona variantes de Bottlerocket que admiten nodos de trabajo de Kubernetes en EC2, VMware y bare metal. También proporciona variantes de Bottlerocket para ECS en EC2. Puede ver la lista de todas las variantes que proporciona AWS.

Sí. Bottlerocket tiene variantes que admiten tipos de instancias de Amazon EC2 basadas en GPU de NVIDIA en Amazon Elastic Container Service (Amazon ECS) y en nodos de trabajo de Kubernetes en EC2. Revise las publicaciones de blog sobre cómo usar estas variantes en ECS y en EKS.

Los lanzamientos de características de Bottlerocket (versiones menores, por ejemplo, 1.10.0, 1.11.0) suelen producirse con un intervalo de 6 a 8 semanas. Las correcciones de errores y de vulnerabilidades y exposiciones comunes (CVE) (versiones de parches, por ejemplo, 1.10.1 o 1.11.1) se realizan según sea necesario y el intervalo de publicación depende de la gravedad del problema. Consulte el registro de cambios CHANGELOG, donde se muestran todos los lanzamientos de Bottlerocket con sus cronogramas.

Soporte

Las compilaciones de Bottlerocket proporcionadas por AWS recibirán actualizaciones de seguridad y correcciones de errores. Además, están cubiertas por los planes de AWS Support. El periodo de soporte técnico para una determinada compilación varía en función de la versión del orquestador de contenedores que se use. Las compilaciones de Bottlerocket quedarán obsoletas al mismo tiempo que la versión del orquestador correspondiente. Por ejemplo, ya no admitimos aws-k8s-1.19, que es la versión de Bottlerocket para Kubernetes 1.19. Esto se debe a que Kubernetes 1.19 ya no cuenta con compatibilidad ascendente. Recomendamos a los clientes que sustituyan los nodos aws-k8s-1.19 por una versión más reciente compatible con el clúster. Además, la comunidad ofrece soporte técnico para Bottlerocket en GitHub, donde se pueden publicar preguntas, solicitar características y reportar errores. La información sobre los lanzamientos y las CVE se publicará en el registro de cambios de Bottlerocket.

Se mantendrá la compatibilidad con las actuales AMI optimizadas para EKS que se basan en Amazon Linux. Además, continuarán las actualizaciones de seguridad para estas. Consulte la AMI de Amazon Linux 2 optimizada para EKS y la AMI optimizada para ECS para obtener más información acerca de la duración de la compatibilidad.

Las compilaciones de Bottlerocket de AWS son compatibles con las familias de instancias de HVM y EC2 Bare Metal, a excepción de los tipos de instancia F, G4ad e INF.

Sí. Consulte esta publicación de blog para obtener más información.

Actualizaciones

AWS proporciona actualizaciones previamente probadas para Bottlerocket que se aplican en un solo paso. Estas actualizaciones también se pueden revertir en un solo paso a un estado correcto conocido. Como resultado, Bottlerocket evita las actualizaciones “fallidas” que pueden provocar que el sistema quede inservible debido a estados incoherentes que necesitan una reparación manual. Con las actualizaciones atómicas de un solo paso, la complejidad es menor y se reducen los errores en las actualizaciones.

Las actualizaciones de las compilaciones de Bottlerocket proporcionadas por AWS se descargan automáticamente de los repositorios preconfigurados de AWS cuando están disponibles. Es necesario reiniciar Bottlerocket para aplicar las actualizaciones. Esta acción se puede iniciar manualmente o puede administrarse a través de un orquestador, como Kubernetes. Debe seleccionar el mecanismo adecuado para gestionar los reinicios en función de la tolerancia de las aplicaciones a estos y de las necesidades operativas. Si se trata de una aplicación sin estado y resistente a los reinicios, estos últimos se pueden llevar a cabo inmediatamente después de la descarga de las actualizaciones. Si ejecuta cargas de trabajo tradicionales con estado (por ejemplo, bases de datos, aplicaciones de línea de negocio de larga duración, etc.) en contenedores que no son resistentes a los reinicios, es necesario asegurarse de que el estado se conserve antes de los reinicios.

Los orquestadores, como Kubernetes, pueden administrar los reinicios de Bottlerocket mediante el vaciado y el reinicio de los contenedores en todos los hosts para habilitar las actualizaciones continuas en un clúster y reducir las interrupciones. De forma predeterminada, Bottlerocket se actualizará automáticamente a la versión segura más reciente al arrancar. Las actualizaciones de Bottlerocket también se pueden revertir de forma segura en caso de que se produzcan errores mediante orquestadores compatibles o a través de una acción manual.

Las integraciones con orquestadores, como Kubernetes, ayudan a que las actualizaciones de Bottlerocket causen la menor interrupción posible. Durante el proceso de actualización, el orquestador vacía los contenedores de los hosts que se actualizan y los coloca en otros hosts vacíos del clúster. El orquestador también revierte a los hosts a la versión anterior de Bottlerocket si las actualizaciones fallan.

Compatibilidad y migración

Bottlerocket puede ejecutar todas las imágenes de contenedores que cumplan con la especificación del formato de imagen de la iniciativa de contenedores abiertos (OCI) y las imágenes de Docker.

Sí, puede trasladar los contenedores entre Amazon Linux 2 y Bottlerocket sin modificaciones.

Si los flujos de trabajo operativos para ejecutar contenedores implican la instalación de software en el sistema operativo host con yum, el acceso directo por ssh a las instancias, la personalización de cada instancia individualmente o la ejecución de software independiente de terceros que no está en contenedores (por ejemplo, agentes para el registro y la supervisión), Amazon Linux 2 puede ser una mejor opción. Bottlerocket está optimizado para ejecutar y administrar grandes implementaciones en contenedores y no permite que se hagan fácilmente muchas de estas actividades.

Resolución de problemas y seguridad

Puede ejecutar un “contenedor de administración” mediante la API de Bottlerocket (invocada a través de los datos del usuario o AWS Systems Manager) y, a continuación, iniciar sesión con SSH para la depuración avanzada y la resolución de problemas con privilegios elevados. AWS proporciona el contenedor de administración que permite instalar y usar herramientas de depuración, como sosreport, traceroute, strace y tcpdump. Se espera que iniciar la sesión en una instancia individual de Bottlerocket sea una operación poco frecuente para la depuración y resolución de problemas avanzadas.

Un contenedor de administración es una imagen de contenedor de Amazon Linux que contiene funcionalidades para la resolución de problemas y la depuración de Bottlerocket; además, se ejecuta con privilegios elevados. Consulte la información sobre cómo usar un contenedor de administración.

Bottlerocket habilita las actualizaciones automáticas de seguridad y reduce la exposición a los ataques de seguridad gracias a que incluye únicamente el software esencial para alojar los contenedores. Bottlerocket utiliza grupos de control de contenedores (cgroups) y espacios de nombres de kernel para el aislamiento entre contenedores. También incluye Security-Enhanced Linux (SELinux) en modo impositivo y seccomp. eBPF en el kernel reduce la necesidad de usar módulos de kernel para muchas operaciones del sistema de bajo nivel al proporcionar un marco de rastreo de baja sobrecarga para rastrear la E/S, las operaciones del sistema de archivos, el uso de la CPU, la detección de intrusiones y la resolución de problemas. Bottlerocket utiliza device-mapper-verity (dm-verity), una característica del kernel de Linux que permite verificar la integridad para ayudar a evitar rootkits que puedan mantener privilegios de raíz.

Existen varias opciones para recopilar registros de nodos de Bottlerocket. Por ejemplo, puede usar CloudWatch Container Insights o Fluent Bit con OpenSearch.

Sí, Bottlerocket tiene referencias del CIS. Las referencias de CIS comprenden un catálogo de ajustes de configuración centrados en la seguridad que ayudan a los clientes de Bottlerocket a configurar o documentar cualquier configuración no conforme, de una manera simple y eficiente. Las referencias del CIS de Bottlerocket incluyen perfiles de configuración nivel 1 y nivel 2 y se puede acceder a ellos desde el sitio web del CIS.

No, Bottlerocket aún no tiene una certificación FIPS. La certificación FIPS para Bottlerocket se encuentra en nuestra plan de desarrollo público; sin embargo, por este momento, no tenemos una estimación de cuándo estará disponible.

Sí, puede lograr la conformidad con PCI mediante Bottlerocket. El conjunto optimizado de características y una reducción de la superficie expuesta a ataques implica que las instancias de Bottlerocket requieren menos configuraciones para cumplir con los requisitos del PCI DSS. Las referencias del CIS de Bottlerocket son un excelente recurso de orientación para reforzar la seguridad y es compatible con los requisitos de los clientes en materia de normas de configuración seguras de conformidad con el requisito 2.2 de PCI DSS. Los clientes también pueden utilizar Fluent Bit para satisfacer los requisitos de los clientes para la elaboración de registros de auditoría a nivel de sistema operativo bajo el requisito 10.2 del PCI DSS. AWS publica nuevas instancias de Bottlerocket (con parches) de forma periódica para ayudar a los clientes a cumplir con los requisitos 6.2 (para v3.2.1) y 6.3.3 (para v4.0) del PCI DSS.

Sí, Bottlerocket es una característica elegible para HIPAA autorizada para su uso con cargas de trabajo reguladas para Amazon EC2 y Amazon EKS. Para obtener orientación sobre la configuración relacionada con Amazon EKS, consulte este documento técnico y obtenga información adicional.

Consulte la guía sobre cómo reforzar y validar Bottlerocket cuando se utiliza con Amazon EKS.

Sí. Amazon Inspector es un servicio de administración de vulnerabilidades que analiza las cargas de trabajo de contenedores y EC2 en busca de vulnerabilidades de software y exposiciones involuntarias a la red. Amazon Inspector aprovecha el agente AWS Systems Manager (SSM Agent) para realizar su análisis en busca de vulnerabilidades. En los hosts de Bottlerocket, el agente de SSM se ejecuta dentro del contenedor host de control, por lo que debe asegurarse de que esté habilitado en sus hosts.

Código abierto y marcas comerciales

El código de Bottlerocket está bajo la licencia Apache 2.0 O MIT. Amazon escribió su Bottlerocket en Rust, de modo que optamos por una licencia que se adapta fácilmente a esa comunidad. El código de terceros subyacente, como el kernel de Linux, continúa sujeto a su licencia original.

Bottlerocket es un proyecto de código abierto alojado en GitHub. Los documentos de diseño, el código, las herramientas de compilación, las pruebas y la documentación se alojarán en GitHub. Utilizaremos los sistemas de GitHub de seguimiento de errores y características para la administración del proyecto. Puede ver el código fuente de Bottlerocket y contribuir con este mediante los flujos de trabajo estándar de GitHub.

Puede hacer una copia del repositorio de GitHub, hacer los cambios y seguir nuestra guía de compilación.

Sí. Si compila Bottlerocket a partir de un código fuente no modificado y redistribuye los resultados, puede utilizar “Bottlerocket” únicamente si queda claro, tanto en el nombre de la distribución como en el contenido asociado a esta, que su distribución es su compilación de Bottlerocket de Amazon y no la compilación oficial. Además, debe identificar la confirmación a partir de la cual se compiló, incluida la fecha de confirmación.

Debe modificar el archivo os-release para utilizar Bottlerocket de acuerdo con esta política o para eliminar las marcas comerciales de Bottlerocket. Para ello, puede modificar tanto packages/release/release.spec como tools/rpm2img. No es necesario cambiar los nombres de la raíz del sistema (/x86_64-bottlerocket-linux-gnu/sys-root), las etiquetas de las particiones, las rutas de los directorios y las descripciones de los archivos de servicio para cumplir con esta política.

Si tiene conocimiento de un uso confuso o engañoso u otro uso indebido de las marcas comerciales de Bottlerocket, puede ponerse en contacto con nosotros tal como se describe anteriormente en trademarks@amazon.com para que podamos investigar más a fondo.