Perguntas frequentes sobre o Bottlerocket

Geral

Bottlerocket é uma distribuição Linux patrocinada e compatível com a AWS que foi desenvolvida especificamente para hospedar workloads de contêiner. Com o Bottlerocket, você pode melhorar a disponibilidade das suas implantações em contêineres e reduzir os custos operacionais, automatizando atualizações na sua infraestrutura de contêineres. O Bottlerocket inclui apenas os softwares essenciais para executar contêineres, o que melhora o uso de recursos, reduz a superfície de ataques de segurança e reduz a sobrecarga de gerenciamento. Ele também se integra a orquestradores de contêineres, como Kubernets e Amazon ECS, para reduzir ainda mais a sobrecarga operacional e de gerenciamento e, ao mesmo tempo, atualizar hosts de contêiner dentro de um cluster.

O Bottlerocket está disponível em todas as regiões comerciais da AWS, GovCloud e regiões da AWS China. O Bottlerocket é o sistema operacional padrão para o EKS Anywhere no VMware vSphere e no bare metal. O Bottlerocket também pode ser usado on-premises para nós de processamento do Kubernetes no VMware, bem como com nós de processamento do EKS Anywhere para Kubernetes em bare metal.

a) Maior tempo de atividade com menor custo operacional e menor complexidade de gerenciamento: ao incluir apenas os componentes necessários para executar os contêineres, o Bottlerocket tem uma pegada de recursos menor, tempos de inicialização mais curtos e uma superfície de ataque de segurança reduzida em comparação ao Linux. Uma pegada menor ajuda a reduzir custos devido ao uso reduzido de recursos de armazenamento, computação e rede. O uso de primitivas de contêiner (em vez de gerenciadores de pacotes) para executar softwares reduz a sobrecarga de gerenciamento.

b) Segurança aprimorada em 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, o que elimina o risco de atualizações “mal feitas” que podem deixar o sistema em um estado inutilizável. Falhas de atualização são comuns com sistemas operacionais de uso geral devido a falhas irrecuperáveis durante atualizações feitas pacote por pacote. No Bottlerocket, as atualizações de segurança podem ser aplicadas automaticamente e com o mínimo de interrupção assim que são disponibilizadas e podem ser revertidas se ocorrerem falhas.

c) Disponibilidade universal e código aberto: um modelo de desenvolvimento aberto permite que clientes, parceiros e todas as partes interessadas façam alterações de código e design no Bottlerocket.

d) Premium Support: o uso de compilações do Bottlerocket fornecidas pela AWS no Amazon EC2 é coberto pelos mesmos planos do AWS Support que também cobrem serviços da AWS como o Amazon EC2, o Amazon EKS e o Amazon ECR.

O Amazon Linux é um SO de uso geral para executar uma ampla variedade de aplicações que estão incluídas no RPM Package Manager ou em contêineres. O Amazon Linux é otimizado para fornecer a capacidade de configurar cada instância conforme necessário para sua workload, usando ferramentas tradicionais como yum, ssh, tcpdump, netconf. Por outro lado, o Bottlerocket foi feito sob medida para executar contêineres e permite que você gerencie com automação um grande número de hosts de contêineres. Especificamente, o Bottlerocket difere do Amazon Linux nos seguintes aspectos:

  • O Bottlerocket não tem um gerenciador de pacotes, e os softwares só podem ser executados como contêineres. As atualizações do Bottlerocket são aplicadas e podem ser revertidas em uma única etapa atômica, reduzindo, assim, os erros de atualização.
  • O principal mecanismo para gerenciar hosts Bottlerocket é com um orquestrador de contêineres como o Kubernetes. Ao contrário do Amazon Linux, o objetivo é que o login em instâncias individuais do Bottlerocket seja uma operação pouco frequente para depuração avançada e solução de problemas.

Os principais componentes do Bottlerocket incluem:

  • Sistema operacional mínimo que inclui o kernel Linux, softwares do sistema e o containerd como o tempo de execução de contêineres.
  • Mecanismo de atualização atômica para aplicar e reverter atualizações do sistema operacional em uma única etapa.
  • Integrações com orquestradores de contêineres, como o Kubernetes, para gerenciar e orquestrar atualizações.
  • “Contêiner de administração”, que pode ser executado opcionalmente para solução de problemas e depuração avançadas.

As compilações do Bottlerocket fornecidas pela AWS estão disponíveis gratuitamente. Você paga apenas pelas instâncias do EC2 que usar.

Sim, é compatível. O Bottlerocket usa os preços dos tipos de instância Linux/Unix do Amazon EC2. A cobrança por segundo é suportada quando você usa uma compilação do Bottlerocket fornecida pela AWS nativamente no EC2. Observe que os produtos do AWS Marketplace criados com o Bottlerocket como base podem ter um custo por hora associado.

Junte-se à comunidade do Bottlerocket no Meetup para saber sobre os últimos eventos do Bottlerocket e conhecer a comunidade. As reuniões são agendadas regularmente.

Atualmente, o Bottlerocket oferece suporte ao NVIDIA Fabric Manager para workloads com várias GPUs e ao NVIDIA GPU Time-Slicing. O Fabric Manager configura as estruturas de memória NVSwitch para formar uma estrutura de memória entre todas as GPUs participantes e monitora os NVLinks que suportam a malha, permitindo melhor desempenho da aplicação e utilização de recursos em um grande cluster de GPUs; em resumo, ele trata várias GPUs como um único pool de memória unificado para tarefas de computação de alto desempenho, como treinamento de IA. O atributo de divisão de tempo da GPU da NVIDIA divide o tempo de processamento da GPU em intervalos menores ou “fatias”, permitindo que vários modelos menores de IA/ML sejam programados em uma GPU com excesso de inscrições.

Como usar o Bottlerocket

A AWS fornece uma imagem de máquina da Amazon (AMI) para o Bottlerocket que você pode usar para execução em tipos de instância do EC2 compatíveis a partir do console, da CLI e do SDK da AWS. A AWS fornecerá compilações do Bottlerocket pré-configuradas para uso com EKS, ECS, VMware e EKS Anywhere em bare metal. Você pode usar o orquestrador para atualizar e gerenciar o SO com o mínimo de interrupções, sem precisar fazer login em cada instância do SO.

Você pode iniciar aplicativos em contêiner em uma instância do Bottlerocket por meio de seu orquestrador. Você também pode incluir scripts de software e inicialização no Bottlerocket durante a personalização da imagem. Consulte a documentação do Bottlerocket para obter detalhes.

É possível implantar e fazer a manutenção do Bottlerocket utilizando as seguintes etapas:

  • Etapa 1: você pode implantar o Bottlerocket da mesma forma que qualquer outro SO em uma máquina virtual. Na AWS, você pode implantar o Bottlerocket em instâncias do EC2 a partir do Console de Gerenciamento da AWS, via API ou via AWS CLI. Você precisa fornecer detalhes de configuração por meio de dados do usuário para cada instância do Bottlerocket para se inscrever em um cluster do Amazon EKS.
  • Etapa 2: para operar o Bottlerocket com o seu orquestrador, você precisará implantar um componente de integração no seu cluster. Esse componente de integração permite que o orquestrador inicie reinicializações, reverta atualizações e substitua contêineres com o mínimo de interrupção para atualizações contínuas.

As atualizações do Bottlerocket são automaticamente transferidas por download de repositórios pré-configurados da AWS quando são disponibilizadas. É necessária uma reinicialização do Bottlerocket para aplicar essas atualizações, e o processo pode ser iniciado manualmente ou gerenciado por um orquestrador, como o Kubernetes. Você precisa selecionar o mecanismo apropriado para lidar com reinicializações de acordo com as suas necessidades operacionais e com a tolerância das suas aplicações a reinicializações. Se você tiver aplicações sem estado e resilientes a reinicializações, estas poderão ser executadas imediatamente após o download das atualizações. Se você estiver executando workloads tradicionais com estado (por exemplo, bancos de dados, aplicações de linha de negócios de longa execução, etc.) em contêineres que não são resilientes a reinicializações, será necessário garantir que o estado seja preservado antes dessas reinicializações.

As reinicializações do Bottlerocket podem ser gerenciadas por orquestradores. Isso é feito por meio da drenagem e da reinicialização de contêineres entre hosts para permitir atualizações contínuas em um cluster a fim de reduzir a interrupção. As atualizações do Bottlerocket também podem ser revertidas com segurança em caso de falhas por meio de ações manuais ou orquestradores compatíveis. Consulte a documentação do Bottlerocket para conhecer as etapas de implantação e uso do “operador de atualizações do Bottlerocket” em clusters do Amazon EKS e em clusters do Amazon ECS.

Versionamento e variantes

As compilações fornecidas pela AWS de compilações do Bottlerocket seguem um esquema de versionamento semântico “principal.secundário.patch”. Versões secundárias do Bottlerocket serão lançadas várias vezes no ano, com alterações como suporte para novas plataformas do EC2, suporte para novos agentes orquestradores e atualizações em componentes de código aberto. O esquema de versão indicará se as atualizações contêm alterações importantes.

Uma variante é uma compilação do Bottlerocket compatível com diferentes recursos ou características de integração. A AWS fornece variantes do Bottlerocket compatíveis com nós de processamento do Kubernetes no EC2, no VMware e em bare metal. A AWS também fornece variantes do Bottlerocket para ECS no EC2. Há uma lista de todas as variantes fornecidas pela AWS.

Sim. O Bottlerocket tem variantes compatíveis com tipos de instância do Amazon EC2 baseados em GPU NVIDIA no Amazon Elastic Container Services (Amazon ECS) e em nós de processamento do Kubernetes no EC2. Veja as publicações do blog sobre como usar essas variantes no ECS e no EKS.

Os lançamentos de recursos do Bottlerocket (versões secundárias, como 1.10.0 e 1.11.0) geralmente acontecem com uma frequência de 6 a 8 semanas. Correções de bugs e CVE (versões de patch, como 1.10.1 e 1.11.1) acontecem conforme necessário, e a frequência de lançamento depende da gravidade do problema. Consulte o CHANGELOG que mostra todos os lançamentos do Bottlerocket com seus cronogramas.

Suporte

As compilações do Bottlerocket fornecidas pela AWS receberão atualizações de segurança e correções de bugs e serão cobertas em planos do AWS Support. O período de suporte de uma determinada compilação dependerá da versão do orquestrador de contêineres que está sendo usado. As compilações do Bottlerocket se tornarão obsoletas quando a respectiva versão do orquestrador ficar obsoleta. Por exemplo, não oferecemos mais suporte para aws-k8s-1.19, que é a compilação do Bottlerocket para o Kubernetes 1.19. Isso está alinhado à interrupção do suporte para o Kubernetes 1.19. Recomendamos que os clientes substituam os nós aws-k8s-1.19 por uma compilação mais recente com suporte pelos seus clusters. Além disso, o suporte da comunidade para o Bottlerocket está disponível no GitHub, onde você pode publicar perguntas, solicitar recursos e informar bugs. Detalhes sobre lançamentos e correções em CVEs serão publicados no changelog do Bottlerocket.

As AMIs atuais otimizadas para o EKS e baseadas no Amazon Linux terão suporte e continuarão recebendo atualizações de segurança. Consulte Amazon Linux 2 AMI otimizada para EKS e AMI otimizada para ECSpara obter detalhes sobre a vida útil do suporte.

As compilações do Bottlerocket da AWS têm suporte em famílias de instâncias Bare Metal do EC2 e HVM, com exceção dos tipos de instância F, G4ad e INF.

Sim. Para obter mais detalhes, consulte esta publicação do blog.

Atualizações

A AWS fornece atualizações pré-testadas para o Bottlerocket, que são aplicadas em uma única etapa. Essas atualizações também podem ser revertidas em uma única etapa para um estado funcional conhecido. Como resultado, atualizações “mal feitas” que podem deixar o sistema inutilizável devido a estados inconsistentes que exigem reparo manual não ocorrem com o Bottlerocket. Com atualizações atômicas em uma única etapa, a complexidade é bem menor, reduzindo assim possíveis falhas de atualização.

As atualizações em compilações do Bottlerocket fornecidas pela AWS são baixadas automaticamente de repositórios pré-configurados da AWS assim que ficam disponíveis. É necessária uma reinicialização do Bottlerocket para aplicar essas atualizações, e o processo pode ser iniciado manualmente ou gerenciado por um orquestrador, como o Kubernetes. Você precisa selecionar o mecanismo apropriado para lidar com reinicializações de acordo com as suas necessidades operacionais e com a tolerância das suas aplicações a reinicializações. Se você tiver aplicações sem estado e resilientes a reinicializações, estas poderão ser executadas imediatamente após o download das atualizações. Se você estiver executando workloads tradicionais com estado (por exemplo, bancos de dados ou aplicações de linha de negócios de longa execução) em contêineres que não são resilientes a reinicializações, será necessário garantir que o estado seja preservado antes dessas reinicializações.

As reinicializações do Bottlerocket podem ser gerenciadas por orquestradores, como o Kubernetes, que drenam e reiniciam contêineres entre hosts para permitir atualizações contínuas em um cluster a fim de reduzir a interrupção. Por padrão, o Bottlerocket será atualizado automaticamente para a versão segura mais recente após a inicialização. As atualizações do Bottlerocket também podem ser revertidas com segurança em caso de falhas por meio de ações manuais ou orquestradores compatíveis.

As integrações com orquestradores, como o Kubernetes, ajudam a fazer com que as atualizações do Bottlerocket causem o mínimo de interrupções. Durante o processo de atualização, o orquestrador drena contêineres em hosts que estão sendo atualizados e os coloca em outros hosts vagos no cluster. O orquestrador também reverterá os hosts para a versão anterior do Bottlerocket se as atualizações falharem.

Compatibilidade e migração

O Bottlerocket pode executar todas as imagens de contêiner que atendem à especificação de formato de imagem OCI e imagens do Docker.

Sim, você pode mover seus contêineres entre o Amazon Linux 2 e o Bottlerocket sem modificações.

Se os seus fluxos de trabalho operacionais para executar contêineres envolvem a instalação de softwares no SO host com yum, conectar-se diretamente via ssh a instâncias, personalizar cada instância individualmente ou executar softwares de ISVs terceiros que não estão em contêineres (por exemplo, agentes para registro em log e monitoramento), o Amazon Linux 2 pode ser mais apropriado. O Bottlerocket é otimizado para executar e gerenciar grandes implantações em contêiner e não permite facilmente muitas dessas atividades.

Solução de problemas e segurança

Você pode executar um “contêiner de administração” usando a API do Bottlerocket (chamada por dados de usuários ou pelo AWS Systems Manager) e, em seguida, fazer login com SSH para depuração avançada e solução de problemas com privilégios elevados. A AWS fornece o contêiner de administração, que permite instalar e usar ferramentas de depuração como sosreport, traceroute, strace, tcpdump. O objetivo é que o login em uma instância individual do Bottlerocket seja uma operação pouco frequente para depuração avançada e solução de problemas.

Um contêiner de administração é uma imagem de contêiner do Amazon Linux que contém utilitários para solução de problemas e depuração do Bottlerocket e que é executada com privilégios elevados. Consulte os detalhes sobre como usar o contêiner de administração.

O Bottlerocket possibilita atualizações de segurança automáticas e reduz a exposição a ataques de segurança, incluindo apenas os softwares essenciais para hospedar contêineres. O Bottlerocket usa grupos de controle de contêineres (cgroups) e namespaces de kernel para isolamento entre contêineres. Ele também vem com o Security-Enhanced Linux (SELinux) no modo de imposição e seccomp. O eBPF no kernel reduz a necessidade de módulos de kernel para muitas operações de sistema de baixo nível, fornecendo uma estrutura de rastreamento com baixa sobrecarga para rastreamento de E/S, operações de sistema de arquivos, uso de CPU, detecção de intrusão e solução de problemas. O Bottlerocket usa o device-mapper-verity (dm-verity), um recurso de kernel do Linux que fornece verificação de integridade para ajudar a evitar rootkits que podem conter privilégios de root.

Existem várias opções para coletar logs dos nós do Bottlerocket. Por exemplo, você pode usar Insights de contêiner do CloudWatch ou Fluent Bit com OpenSearch.

Sim, o Bottlerocket tem uma CIS Benchmark. A CIS Benchmark é um catálogo de configurações com foco em segurança que ajudam os clientes do Bottlerocket a configurar ou documentar qualquer configuração não compatível de maneira simples e eficiente. A CIS Benchmark para Bottlerocket inclui os perfis de configuração de Nível 1 e Nível 2 e pode ser acessada a partir do site da CIS.

A partir da versão 1.27.0, o Bottlerocket inclui variantes pré-configuradas para usar módulos criptográficos validados pelo FIPS 140-3, incluindo a Amazon Linux 2023 Kernel Crypto API e AWS-LC.

Sim, você pode obter conformidade com PCI usando o Bottlerocket. O conjunto de recursos otimizado 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. A CIS Benchmark para Bottlerocket é um excelente recurso para orientação de proteção e oferece suporte aos requisitos do cliente para padrões de configuração segura sob o requisito 2.2 do PCI DSS. Os clientes também podem aproveitar o Fluent Bit para atender aos requisitos do cliente para registro de auditoria no nível do sistema operacional sob o requisito 10.2 do PCI DSS. A AWS publica novas instâncias (corrigidas) do Bottlerocket periodicamente para ajudar os clientes a cumprir os requisitos 6.2 (para v3.2.1) e 6.3.3 (para v4.0) do PCI DSS.

Sim, o Bottlerocket é um recurso qualificado pela HIPAA e autorizado para uso com workloads regulamentadas para o Amazon EC2 e o Amazon EKS. Para obter recomendações de configuração relacionadas ao Amazon EKS, consulte este whitepaper para ver informações adicionais.

Consulte o guia sobre fortalecimento e validação do Bottlerocket quando ele for usado com o Amazon EKS.

Sim. O Amazon Inspector é um serviço de gerenciamento de vulnerabilidades que verifica continuamente workloads do EC2 e de contêineres em busca de vulnerabilidades de software e exposição não intencional à rede. O Amazon Inspector usa o agente do AWS System Manager (SSM) para buscar vulnerabilidades. Em hosts do Bottlerocket, o agente do SSM é executado dentro do contêiner do host de controle. Portanto, você precisa verificar se ele está ativado em seus hosts.

Código aberto e marcas comerciais

O código do Bottlerocket está licenciado sob a Apache 2.0 OU MIT. A Amazon escreveu seu Bottlerocket no Rust, então escolhemos uma licença que se adapta facilmente a essa comunidade. O código de terceiros subjacente, como o kernel do Linux, permanece sujeito à sua licença original.

O Bottlerocket foi lançado como um projeto de código aberto hospedado no GitHub. Documentos de design, código, ferramentas de compilação, testes e documentação serão hospedados no GitHub. Usaremos os sistemas de rastreamento de bugs e recursos do GitHub para gerenciamento de projetos. Você pode visualizar e contribuir com o código-fonte do Bottlerocket usando fluxos de trabalho padrão do GitHub.

Você pode bifurcar o repositório do GitHub, fazer suas alterações e seguir nosso guia de compilação.

Sim. Se você compilar o Bottlerocket a partir de uma origem não modificada e redistribuir os resultados, poderá usar o nome “Bottlerocket” somente se estiver claro no nome da sua distribuição e no conteúdo associado que essa distribuição representa sua compilação do Bottlerocket da Amazon, e não a compilação oficial. Além disso, será necessário identificar o commit do qual ela foi compilada, incluindo a data de commit.

Você deve modificar o arquivo os-release para usar o Bottlerocket de acordo com esta Política ou para remover as marcas comerciais do Bottlerocket. Para fazer isso, modifique packages/release/release.spec e tools/rpm2img. Nomes da raiz do sistema (/x86_64-bottlerocket-linux-gnu/sys-root), rótulos de partição, caminhos de diretório e descrições de arquivos de serviços não precisam ser alterados para manter a compatibilidade com essa política.

Se você estiver ciente do uso confuso ou enganoso ou de outro uso indevido das Marcas Comerciais do Bottlerocket, entre em contato conosco conforme descrito acima em trademarks@amazon.com para que possamos investigar a questão.