

 **Ajudar a melhorar esta página** 

Para contribuir com este guia de usuário, escolha o link **Editar esta página no GitHub**, disponível no painel direito de cada página.

# Criar nós com AMIs otimizadas do Bottlerocket
<a name="eks-optimized-ami-bottlerocket"></a>

 O [Bottlerocket](https://aws.amazon.com/bottlerocket/) é uma distribuição de código aberto do Linux patrocinada e apoiada pela AWS. O Bottlerocket foi desenvolvido especificamente para hospedar workloads de contêineres. Com o Bottlerocket, você pode melhorar a disponibilidade de implantações em contêineres e reduzir os custos operacionais automatizando as atualizações em sua infraestrutura de contêineres. O Bottlerocket inclui somente o software essencial para executar contêineres, o que melhora o uso de recursos, reduz as ameaças à segurança e diminui a sobrecarga de gerenciamento. A AMI do Bottlerocket inclui `containerd`, `kubelet` e o AWS IAM Authenticator. Além dos grupos de nós gerenciados e dos nós autogerenciados, o Bottlerocket também é compatível com o [Karpenter](https://karpenter.sh/).

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

Usar o Bottlerocket com seu cluster do Amazon EKS tem as seguintes vantagens:
+  **Maior tempo de atividade com menor custo operacional e menor complexidade de gerenciamento**: o Bottlerocket tem um volume de recursos menor, tempos de inicialização mais curtos e é menos vulnerável a ameaças de segurança do que outras distribuições do Linux. Um volume menor do Bottlerocket ajuda a reduzir custos usando menos recursos de armazenamento, computação e rede.
+  **Segurança aprimorada com atualizações automáticas do sistema operacional**: as atualizações do Bottlerocket são aplicadas como uma única unidade que pode ser revertida, se necessário. Isso elimina o risco de atualizações corrompidas ou com falha que podem deixar o sistema em um estado inutilizável. Com o Bottlerocket, as atualizações de segurança poderão ser aplicadas automaticamente assim que estiverem disponíveis de forma minimamente disruptiva, e poderão ser revertidas se ocorrerem falhas.
+  **Suporte Premium**: as compilações fornecidas pela AWS do Bottlerocket no Amazon EC2 são cobertas pelos mesmos planos de suporte do AWS Support, que também abrangem serviços da AWS como o Amazon EC2, Amazon EKS e Amazon ECR.

## Considerações
<a name="bottlerocket-considerations"></a>

Considere o seguinte ao usar o Bottlerocket para seu tipo de AMI:
+ O Bottlerocket é compatível com instâncias do Amazon EC2 com processadores `x86_64` e `arm64`.
+ O Bottlerocket é compatível com instâncias do Amazon EC2 equipadas com GPUs. Para obter mais informações, consulte [Uso de AMIs aceleradas e otimizadas para o EKS em instâncias de GPU](ml-eks-optimized-ami.md).
+ As imagens do Bottlerocket não incluem um shell ou um servidor SSH. Você pode usar métodos de acesso fora de banda para permitir o SSH. Essas abordagens habilitam o contêiner do administrador e a aprovação de algumas etapas de configuração de bootstrapping com dados de usuário. Para obter mais informações, consulte as seguintes seções em [Bottlerocket OS](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) no GitHub:
  +  [Exploration (Exploração](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#exploration) 
  +  [Admin container (Contêiner Admin](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) 
  +  [Kubernetes settings (Configurações do Kubernetes](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#kubernetes-settings) 
+ O Bottlerocket usa diferentes tipos de contêineres:
  + Por padrão, um [contêiner de controle](https://github.com/bottlerocket-os/bottlerocket-control-container) está habilitado. Esse contêiner executa o [agente do AWS Systems Manager](https://github.com/aws/amazon-ssm-agent) que você pode usar para executar comandos ou iniciar sessões de shell em instâncias do Bottlerocket para Amazon EC2. Para obter mais informações, consulte [Configuração do Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) no * Guia do Usuário do AWS Systems Manager*.
  + Se uma chave SSH foi fornecida ao criar o grupo de nós, um contêiner de administrador está habilitado. Recomendamos usar o contêiner administrador somente para casos de desenvolvimento e teste. Não recomendamos usá-lo em ambientes de produção. Para obter mais informações, consulte [Contêiner administrador](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) no GitHub.

## Mais informações
<a name="bottlerocket-more-information"></a>

Para obter mais informações sobre o uso de AMIs do Bottlerocket otimizadas para o Amazon EKS, consulte as seguintes seções:
+ Para obter detalhes sobre o Bottlerocket, consulte a [documentação do Bottlerocket](https://bottlerocket.dev/en/).
+ Para obter recursos de informações da versão, consulte [Recuperar informações das versões de AMIs do Bottlerocket](eks-ami-versions-bottlerocket.md).
+ Para usar o Bottlerocket com grupos de nós gerenciados, consulte [Simplificar o ciclo de vida dos nós com grupos de nós gerenciados](managed-node-groups.md).
+ Para executar os nós autogerenciados do Bottlerocket, consulte [Criar nós Bottlerocket autogerenciados do Bottlerocket](launch-node-bottlerocket.md).
+ Para recuperar os IDs mais recentes das AMIs do Bottlerocket otimizadas para o Amazon EKS, consulte [Recuperar IDs da AMI do Bottlerocket recomendadas](retrieve-ami-id-bottlerocket.md).
+ Para obter detalhes sobre suporte para conformidade, consulte [Atender aos requisitos de conformidade com o Bottlerocket](bottlerocket-compliance-support.md).

# Recuperar informações das versões de AMIs do Bottlerocket
<a name="eks-ami-versions-bottlerocket"></a>

Cada versão de AMI do Bottlerocket inclui várias versões do [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), do kernel do Bottlerocket e do [containerd](https://containerd.io/). As variantes de AMIs aceleradas também incluem várias versões do driver NVIDIA. Você pode encontrar essas informações sobre a versão no tópico [OS](https://bottlerocket.dev/en/os/) da *documentação do Bottlerocket*. Nessa página, navegue até o subtópico de *informações da versão* aplicável.

A *documentação do Bottlerocket* pode, às vezes, ficar atrasada em relação às versões disponíveis no GitHub. Você pode encontrar uma lista de alterações das versões mais recentes nas [versões](https://github.com/bottlerocket-os/bottlerocket/releases) no GitHub.

# Recuperar IDs da AMI do Bottlerocket recomendadas
<a name="retrieve-ami-id-bottlerocket"></a>

Ao implantar nós, é possível especificar um ID para uma imagem de máquina da Amazon (AMI) pré-compilada e otimizada para o Amazon EKS. Para recuperar um ID de AMI que se ajuste à configuração desejada, consulte a API AWS Systems Manager Parameter Store. O uso dessa API elimina a necessidade de pesquisar manualmente IDs de AMIs otimizadas para o Amazon EKS. Para obter mais informações, consulte [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). A [entidade principal do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) que você usou deve ter a permissão `ssm:GetParameter` do IAM para recuperar os metadados da AMI otimizada para o Amazon EKS.

Você pode recuperar o ID da imagem da AMI otimizada mais recente do Bottlerocket para Amazon EKS com o comando a seguir da AWS CLI, que usa o subparâmetro `image_id`. Faça as seguintes modificações no comando, conforme necessário, e execute o comando atualizado:
+ Substitua *kubernetes-version* por uma [versão da plataforma](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) compatível.
+ Substitua *-flavor* por uma das opções a seguir.
  + Remover *-flavor* para variantes sem GPU.
  + Use *-nvidia* para variantes habilitadas para GPU.
  + Use *-fips* para variantes habilitadas para FIPS.
+ Substitua *architecture* por uma das opções a seguir.
  + Use *x86\$164* para instâncias baseadas em `x86`.
  + Use *arm64* para instâncias ARM.
+ Substitua *region-code* por uma [região da AWScompatível com o Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) para a qual você deseja obter o ID da 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
```

Aqui está um exemplo de comando após as substituições do espaço reservado terem sido feitas.

```
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
```

Veja abaixo um exemplo de saída.

```
ami-1234567890abcdef0
```

# Atender aos requisitos de conformidade com o Bottlerocket
<a name="bottlerocket-compliance-support"></a>

O Bottlerocket está em conformidade com as recomendações definidas por várias organizações:
+ Existe um [nível de referência do CIS](https://www.cisecurity.org/benchmark/bottlerocket) definido para o Bottlerocket. Em uma configuração padrão, a imagem do Bottlerocket tem a maioria dos controles exigidos pelo perfil de configuração CIS Nível 1. É possível implementar os controles necessários para um perfil de configuração CIS de nível 2. Para obter mais informações, consulte [Validação da AMI otimizada do Bottlerocket do Amazon EKS em relação ao Benchmark CIS](https://aws.amazon.com/blogs/containers/validating-amazon-eks-optimized-bottlerocket-ami-against-the-cis-benchmark) no blog AWS.
+ O conjunto de recursos otimizados e a superfície de ataque reduzida significam que as instâncias do Bottlerocket exigem menos configuração para atender aos requisitos do PCI DSS. O [CIS Benchmark for Bottlerocket](https://www.cisecurity.org/benchmark/bottlerocket) é um excelente recurso para orientação de hardening e apoia seus requisitos de padrões de configuração segura de acordo com o requisito 2.2 do PCI DSS. Também é possível usar o [Fluent Bit](https://opensearch.org/blog/technical-post/2022/07/bottlerocket-k8s-fluent-bit/) para atender aos seus requisitos de registro em log de auditoria em nível de sistema operacional, de acordo com o requisito 10.2 do PCI DSS. A AWS publica instâncias novas (com patches) do Bottlerocket periodicamente para ajudar a atender aos requisitos 6.2 do PCI DSS (para v3.2.1) e 6.3.3 (para v4.0).
+ O Bottlerocket é um recurso qualificado para HIPAA autorizado para uso com workloads regulamentadas tanto para o Amazon EC2 quanto para o Amazon EKS. Para obter mais informações, consulte a [referência de serviços qualificados pelo HIPAA](https://aws.amazon.com/compliance/hipaa-eligible-services-reference/).
+ As AMIs do Bottlerocket pré-configuradas estão disponíveis para o uso de módulos de criptografia validados por FIPS 140-3. Inclui os módulos Amazon Linux 2023 Kernel Crypto API Cryptographic e AWS-LC Cryptographic. Para obter mais informações, consulte [Prepare seus nós de processamento para o FIPS com as AMIs do FIPS do Bottlerocket](bottlerocket-fips-amis.md).

# Prepare seus nós de processamento para o FIPS com as AMIs do FIPS do Bottlerocket
<a name="bottlerocket-fips-amis"></a>

A publicação 140-3 do Federal Information Processing Standard (FIPS) é um padrão dos governos dos EUA e do Canadá que especifica os requisitos de segurança para módulos criptográficos que protegem informações confidenciais. O Bottlerocket facilita o cumprimento do FIPS ao oferecer AMIs com um kernel do FIPS.

Essas AMIs são pré-configuradas para serem usadas com módulos criptográficos validados pelo FIPS 140-3. Inclui os módulos Amazon Linux 2023 Kernel Crypto API Cryptographic e AWS-LC Cryptographic.

O uso das AMIs do FIPS do Bottlerocket torna seus nós de processamento “prontos para o FIPS”, mas não estão automaticamente “em conformidade com o FIPS”. Para obter mais informações, consulte [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

## Considerações
<a name="_considerations"></a>
+ Se o cluster usar sub-redes isoladas, o endpoint do FIPS do Amazon ECR poderá não estar acessível. Isso pode fazer com que o bootstrap do nó falhe. Certifique-se de que sua configuração de rede tenha acesso aos endpoints necessários do FIPS. Para obter mais informações, consulte [Access a resource through a resource VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/use-resource-endpoint.html) no *Guia do AWS PrivateLink*.
+ Se o cluster usar uma sub-rede com o [PrivateLink](vpc-interface-endpoints.md), as extrações de imagens falharão porque os endpoints do FIPS do Amazon ECR não estarão disponíveis por meio do PrivateLink.

## Criar um grupo de nós gerenciados com uma AMI do FIPS do Bottlerocket
<a name="_create_a_managed_node_group_with_a_bottlerocket_fips_ami"></a>

A AMI do FIPS do Bottlerocket vem em quatro variantes para oferecer suporte às suas workloads:
+  `BOTTLEROCKET_x86_64_FIPS` 
+  `BOTTLEROCKET_ARM_64_FIPS` 
+  `BOTTLEROCKET_x86_64_NVIDIA_FIPS` 
+  `BOTTLEROCKET_ARM_64_NVIDIA_FIPS` 

Para criar um grupo de nós gerenciados com uma AMI do FIPS do Bottlerocket, escolha o tipo de AMI aplicável durante o processo de criação. Para obter mais informações, consulte [Criar um grupo de nós gerenciados para seu cluster](create-managed-node-group.md).

Para obter mais informações sobre como selecionar variantes habilitadas para FIPS, consulte [Recuperar IDs da AMI do Bottlerocket recomendadas](retrieve-ami-id-bottlerocket.md).

## Desabilitar o endpoint do FIPS para regiões da AWS não compatíveis
<a name="disable_the_fips_endpoint_for_non_supported_shared_aws_regions"></a>

As AMIs do FIPS do Bottlerocket são compatíveis diretamente nos Estados Unidos, incluindo as regiões AWS GovCloud (EUA). Para regiões da AWS em que as AMIs estão disponíveis, mas não são compatíveis diretamente, você ainda poderá usar as AMIs criando um grupo de nós gerenciados com um modelo de execução.

A AMI do FIPS do Bottlerocket depende do endpoint do FIPS do Amazon ECR durante o bootstrap, que geralmente não está disponível fora dos Estados Unidos. Para usar a AMI para o kernel do FIPS nas regiões da AWS que não têm o endpoint do FIPS do Amazon ECR disponível, siga estas etapas para desabilitar o endpoint do FIPS:

1. Crie um novo arquivo de configuração com o conteúdo a seguir ou incorpore o conteúdo ao seu arquivo de configuração existente.

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

1. Codifique o conteúdo do arquivo no formato Base64.

1. No `UserData` do seu modelo de execução, adicione a seguinte string codificada usando o formato TOML:

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

Para outras configurações, consulte [Description of settings](https://github.com/bottlerocket-os/bottlerocket?tab=readme-ov-file#description-of-settings) do Bottlerocket no GitHub.

Veja abaixo um exemplo de `UserData` em um modelo de execução:

```
[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 obter mais informações sobre como criar um modelo de execução com dados de usuário, consulte [Personalizar nós gerenciados com modelos de execução](launch-templates.md).