

 **Ayude a mejorar esta página** 

Para contribuir a esta guía del usuario, elija el enlace **Edit this page on GitHub** que se encuentra en el panel derecho de cada página.

# Creación de nodos con AMI de Bottlerocket optimizadas
<a name="eks-optimized-ami-bottlerocket"></a>

 [Bottlerocket](https://aws.amazon.com/bottlerocket/) es una distribución de Linux de código abierto patrocinada y respaldada por AWS. Bottlerocket está diseñado específicamente para alojar cargas de trabajo de contenedores. Con Bottlerocket, puede 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 solo el software esencial para ejecutar los contenedores, lo que mejora el uso de los recursos, reduce las amenazas a la seguridad y reduce los gastos de administración. La AMI de Bottlerocket incluyes `containerd`, `kubelet` y el Autenticador de AWS IAM. Además de los grupos de nodos administrados y los nodos autoadministrados, Bottlerocket también es compatible con [Karpenter](https://karpenter.sh/).

## Ventajas
<a name="bottlerocket-advantages"></a>

Al utilizar Bottlerocket con el clúster de Amazon EKS, tiene las siguientes ventajas:
+  **Mayor tiempo de actividad con un menor costo operativo y una menor complejidad de administración:** Bottlerocket ocupa menos recursos, tiene tiempos de arranque más cortos y es menos vulnerable a las amenazas de seguridad que otras distribuciones de Linux. Una huella más pequeña de Bottlerocket ayuda a reducir los costos al utilizar menos recursos de almacenamiento, computación y redes.
+  **Seguridad mejorada gracias a las actualizaciones automáticas del sistema operativo**: las actualizaciones de Bottlerocket se aplican como una sola unidad y se pueden anular si es necesario. Esto elimina el riesgo de actualizaciones dañadas o fallidas que pueden dejar el sistema inutilizable. Con Bottlerocket, las actualizaciones de seguridad se pueden aplicar automáticamente tan pronto como estén disponibles de forma mínimamente disruptiva y revertirse si se producen errores.
+  **Soporte premium**: las versiones proporcionadas por AWS de Bottlerocket en Amazon EC2 están cubiertas por los mismos planes de AWS Support que también cubren servicios de AWS como Amazon EC2, Amazon EKS y Amazon ECR.

## Consideraciones
<a name="bottlerocket-considerations"></a>

Tenga en cuenta lo siguiente cuando utilice Bottlerocket para su tipo de AMI:
+ Bottlerocket admite instancias de Amazon EC2 con procesadores `x86_64` y `arm64`.
+ Bottlerocket admite instancias de Amazon EC2 con GPU. Para obtener más información, consulte [Uso de AMI aceleradas optimizadas para EKS para instancias de GPU](ml-eks-optimized-ami.md).
+ Las imágenes de Bottlerocket no incluyen un servidor SSH ni un intérprete de comandos. Puede utilizar métodos de acceso fuera de banda para permitir SSH. Estos métodos permiten el contenedor de administrador y superar algunos pasos de configuración de arranque con datos de usuario. Para obtener más información, consulte las siguientes secciones de [Bottlerocket OS](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) en GitHub:
  +  [Exploration (Exploración](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#exploration) 
  +  [Contenedor de administrador](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) 
  +  [Configuración de Kubernetes](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#kubernetes-settings) 
+ Bottlerocket utiliza diferentes tipos de contenedores:
  + De forma predeterminada, se habilita un [contenedor de control](https://github.com/bottlerocket-os/bottlerocket-control-container). Este contenedor ejecuta el [agente de AWS Systems Manager](https://github.com/aws/amazon-ssm-agent) que puede utilizar para ejecutar comandos o iniciar sesiones de intérprete de comandos en instancias de Bottlerocket de Amazon EC2. Para obtener más información, consulte [Configuración del Administrador de sesiones](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) en la *Guía del usuario de AWS*.
  + Si se proporciona una clave SSH al crear el grupo de nodos, se habilita un contenedor de administración. Recomendamos utilizar el contenedor de administración solo para escenarios de desarrollo y pruebas. No recomendamos utilizarlo en entornos de producción. Para obtener más información, consulte [Contenedor de administración](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) en GitHub.

## Más información
<a name="bottlerocket-more-information"></a>

Para obtener más información sobre el uso de las AMI de Bottlerocket optimizadas para Amazon EKS, consulte las siguientes secciones:
+ Para obtener más información sobre Bottlerocket, consulte la [documentación de Bottlerocket](https://bottlerocket.dev/en/).
+ Para obtener recursos de información sobre la versión, consulte [Recuperación de información sobre la versión de la AMI de Bottlerocket](eks-ami-versions-bottlerocket.md).
+ Para usar Bottlerocket con grupos de nodos administrados, consulte [Simplificación del ciclo de vida de los nodos con grupos de nodos administrados](managed-node-groups.md).
+ Para lanzar nodos de Bottlerocket autoadministrados, consulte [Creación de nodos de Bottlerocket autoadministrados](launch-node-bottlerocket.md).
+ Para recuperar los ID más recientes de las AMI de Bottlerocket optimizadas para Amazon EKS, consulte [Recuperación de los ID de AMI de Bottlerocket recomendados](retrieve-ami-id-bottlerocket.md).
+ Para obtener más información sobre el soporte de cumplimiento, consulte [Cómo cumplir con los requisitos de conformidad mediante Bottlerocket](bottlerocket-compliance-support.md).

# Recuperación de información sobre la versión de la AMI de Bottlerocket
<a name="eks-ami-versions-bottlerocket"></a>

Cada versión de la AMI de Bottlerocket incluye varias versiones de [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), el kernel de Bottlerocket y [containerd](https://containerd.io/). Las variantes de AMI aceleradas también incluyen varias versiones del controlador de NVIDIA. Encontrará más información sobre esta versión en el tema sobre el [sistema operativo](https://bottlerocket.dev/en/os/) en la *documentación de Bottlerocket*. En esta página, navegue hasta el subtema *Información sobre la versión* correspondiente.

A veces, la *documentación de Bottlerocket* puede retrasarse respecto a las versiones que están disponibles en GitHub. Puede encontrar una lista de los cambios de las últimas versiones en [Releases](https://github.com/bottlerocket-os/bottlerocket/releases) en GitHub.

# Recuperación de los ID de AMI de Bottlerocket recomendados
<a name="retrieve-ami-id-bottlerocket"></a>

Al implementar nodos, puede especificar un ID de una imagen de máquina de Amazon (AMI) optimizada para Amazon EKS previamente creada. Para recuperar un ID de AMI que se ajuste a la configuración deseada, consulte la API del almacén de parámetros de AWS Systems Manager. Al utilizar esta API, se elimina la necesidad de buscar manualmente los ID de AMI optimizados para Amazon EKS. Para obtener más información, consulte [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). La [entidad principal de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) que utiliza debe tener el permiso `ssm:GetParameter` de IAM para recuperar los metadatos de la AMI optimizada para Amazon EKS.

Puede recuperar el ID de imagen de la última AMI de Bottlerocket optimizada para Amazon EKS recomendada con el siguiente comando de la AWS CLI, que usa el parámetro secundario `image_id`. Realice las siguientes modificaciones en el comando según sea necesario y, a continuación, ejecute el comando modificado:
+ Reemplace *kubernetes-version* por cualquier [versión de la plataforma](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) compatible.
+ Reemplace *-flavor* por una de las siguientes opciones:
  + Elimine *-flavor* para las variantes sin GPU.
  + Use *-nvidia* para las variantes con GPU habilitadas.
  + Utilice *-fips* para las variantes habilitadas para FIPS.
+ Reemplace *architecture* por una de las siguientes opciones:
  + Use *x86\$164* para instancias basadas en `x86`.
  + Use *arm64* para instancias de ARM.
+ Sustituya *region-code* por una [región de AWS compatible con Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) para la que desea el ID de AMI.

```
aws ssm get-parameter --name /aws/service/bottlerocket/aws-k8s-kubernetes-version-flavor/architecture/latest/image_id \
    --region region-code --query "Parameter.Value" --output text
```

A continuación, se muestra un comando de ejemplo después de reemplazar los marcadores de posición.

```
aws ssm get-parameter --name /aws/service/bottlerocket/aws-k8s-1.31/x86_64/latest/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

Un ejemplo de salida sería el siguiente.

```
ami-1234567890abcdef0
```

# Cómo cumplir con los requisitos de conformidad mediante Bottlerocket
<a name="bottlerocket-compliance-support"></a>

Bottlerocket cumple con las recomendaciones definidas por varias organizaciones:
+ Hay un [punto de referencia del CIS](https://www.cisecurity.org/benchmark/bottlerocket) definido por Bottlerocket. En una configuración predeterminada, la imagen de Bottlerocket tiene la mayoría de los controles requeridos por el perfil de configuración de nivel 1 del CIS. Puede implementar los controles requeridos para un perfil de configuración de nivel 2 de CIS. Para obtener más información, consulte [Validar la AMI de Bottlerocket optimizada de Amazon EKS con el punto de referencia del CIS](https://aws.amazon.com/blogs/containers/validating-amazon-eks-optimized-bottlerocket-ami-against-the-cis-benchmark) en el blog de AWS.
+ El conjunto de características optimizado y la reducción de la superficie expuesta a ataques significan que las instancias de Bottlerocket requieren menos configuración para cumplir con los requisitos de PCI DSS. El [Punto de referencia de CIS para Bottlerocket](https://www.cisecurity.org/benchmark/bottlerocket) es un recurso excelente para reforzar las directrices y cumple con los requisitos de estándares de configuración segura según el requisito 2.2 de PCI DSS. También puede aprovechar [Fluent Bit](https://opensearch.org/blog/technical-post/2022/07/bottlerocket-k8s-fluent-bit/) para cumplir con sus requisitos de registro de auditorías a nivel de sistema operativo según el requisito 10.2 de PCI DSS. AWS publica instancias nuevas (con parches) de Bottlerocket periódicamente para ayudarlo a cumplir con los requisitos 6.2 de PCI DSS (para la versión 3.2.1) y 6.3.3 (para la versión 4.0).
+ Bottlerocket es una característica que cumple los requisitos de la HIPAA y está autorizada para su uso con cargas de trabajo reguladas tanto para Amazon EC2 como para Amazon EKS. Para obtener más información, consulte la [Referencia de servicios compatibles con HIPAA](https://aws.amazon.com/compliance/hipaa-eligible-services-reference/).
+ Existen AMI de Bottlerocket preconfiguradas para utilizar módulos criptográficos validados por FIPS 140-3. Entre otras, el módulo criptográfico Kernel Crypto API de Amazon Linux 2023 y el módulo criptográfico AWS-LC. Para obtener más información, consulte [Prepare sus nodos de trabajo para el FIPS con las AMI aprobadas por el FIPS de Bottlerocket](bottlerocket-fips-amis.md).

# Prepare sus nodos de trabajo para el FIPS con las AMI aprobadas por el FIPS de Bottlerocket
<a name="bottlerocket-fips-amis"></a>

El Estándar de procesamiento de la información federal (FIPS), publicación 140-3, es un estándar de los gobiernos de Estados Unidos y Canadá que especifica los requisitos de seguridad de los módulos criptográficos que protegen información confidencial. Bottlerocket facilita el cumplimiento del FIPS porque ofrece AMI con un kernel de FIPS.

Estas AMI están preconfiguradas para utilizar módulos criptográficos validados por FIPS 140-3. Entre otras, el módulo criptográfico Kernel Crypto API de Amazon Linux 2023 y el módulo criptográfico AWS-LC.

El uso de las AMI aprobadas por el FIPS de Bottlerocket hace que sus nodos de trabajo estén “preparados para el FIPS”, pero no hace que automáticamente “cumplan con el FIPS”. Para obtener más información, consulte [Estándar de procesamiento de la información federal (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

## Consideraciones
<a name="_considerations"></a>
+ Si el clúster utiliza subredes aisladas, es posible que no se pueda acceder al punto de conexión del FIPS de Amazon ECR. Esto puede provocar que el arranque del nodo falle. Asegúrese de que la configuración de red permita el acceso a los puntos de conexión del FIPS necesarios. Para obtener más información, consulte [Acceso a un recurso a través un punto de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/use-resource-endpoint.html) en la *Guía de AWS PrivateLink*.
+ Si su clúster usa una subred con [PrivateLink](vpc-interface-endpoints.md), las extracciones de imágenes fallarán porque los puntos de conexión del FIPS de Amazon ECR no están disponibles a través de PrivateLink.

## Creación de un grupo de nodos administrados con una AMI aprobada por el FIPS de Bottlerocket
<a name="_create_a_managed_node_group_with_a_bottlerocket_fips_ami"></a>

La AMI Bottlerocket FIPS está disponible en cuatro variantes para admitir las cargas de trabajo.
+  `BOTTLEROCKET_x86_64_FIPS` 
+  `BOTTLEROCKET_ARM_64_FIPS` 
+  `BOTTLEROCKET_x86_64_NVIDIA_FIPS` 
+  `BOTTLEROCKET_ARM_64_NVIDIA_FIPS` 

Para crear un grupo de nodos administrado con una AMI aprobada por el FIPS de Bottlerocket, elija el tipo de AMI correspondiente durante el proceso de creación. Para obtener más información, consulte [Creación de un grupo de nodos administrados para un clúster](create-managed-node-group.md).

Para obtener más información sobre cómo seleccionar variantes compatibles con FIPS, consulte [Recuperación de los ID de AMI de Bottlerocket recomendados](retrieve-ami-id-bottlerocket.md).

## Deshabilite el punto de conexión del FIPS para las regiones de AWS no compatibles
<a name="disable_the_fips_endpoint_for_non_supported_shared_aws_regions"></a>

Las AMI aprobadas por el FIPS de Bottlerocket se admiten directamente en los Estados Unidos, incluidas las regiones de AWS GovCloud (EE. UU.). En las regiones de AWS en las que las AMI están disponibles, pero no se admiten directamente, puede seguir usándolas mediante la creación de un grupo de nodos administrados con una plantilla de lanzamiento.

La AMI aprobada por el FIPS de Bottlerocket se basa en el punto de conexión del FIPS de Amazon ECR durante el arranque, que generalmente no está disponible fuera de los Estados Unidos. Para usar la AMI para su kernel de FIPS en las regiones de AWS que no tienen disponible el punto de conexión del FIPS de Amazon ECR, siga estos pasos para inhabilitar el punto de conexión del FIPS:

1. Cree un nuevo archivo de configuración con el siguiente contenido o incorpórelo a su archivo de configuración existente.

```
[default]
use_fips_endpoint=false
```

1. Codifique el contenido del archivo en formato Base64.

1. En el `UserData` de la plantilla de lanzamiento, añada la siguiente cadena codificada en formato TOML:

```
[settings.aws]
config = "<your-base64-encoded-string>"
```

Para ver otros ajustes, consulte la [descripción de los ajustes](https://github.com/bottlerocket-os/bottlerocket?tab=readme-ov-file#description-of-settings) de Bottlerocket en GitHub.

A continuación, se muestra un ejemplo de `UserData` en una plantilla de lanzamiento:

```
[settings]
motd = "Hello from eksctl!"
[settings.aws]
config = "W2RlZmF1bHRdCnVzZV9maXBzX2VuZHBvaW50PWZhbHNlCg==" # Base64-encoded string.
[settings.kubernetes]
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
cluster-name = "<cluster-name>"
...<other-settings>
```

Para obtener más información acerca de la creación de una plantilla de lanzamiento, consulte [Personalización de nodos administrados con plantillas de lanzamiento](launch-templates.md).