Domande generali

Cos'è Bottlerocket?

Bottlerocket è un nuovo sistema operativo open source basato su Linux creato appositamente per eseguire container. Con Bottlerocket puoi migliorare la disponibilità delle tue distribuzioni containerizzate e ridurre i costi operativi automatizzando gli aggiornamenti della tua infrastruttura di container. Bottlerocket include solo il software essenziale per eseguire i contenitori, che migliora l'utilizzo delle risorse, riduce la superficie di attacco alla sicurezza e riduce il sovraccarico di gestione. Si integra inoltre con gli orchestratori di container (come Amazon EKS ed Amazon ECS) per ridurre ulteriormente la gestione e il sovraccarico operativo durante l'aggiornamento degli host di container in un cluster. 

Quali sono i vantaggi dell'utilizzo di Bottlerocket?

a) Tempi di funzionamento più elevati con costi operativi inferiori e minore complessità di gestione: includendo solo i componenti necessari per eseguire i container, Bottlerocket ha un ingombro di risorse, tempi di avvio e superficie di attacco alla sicurezza inferiori rispetto ai sistemi operativi generici. Un ingombro minimo aiuta a ridurre i costi a causa della riduzione dell'utilizzo delle risorse di archiviazione, elaborazione e rete. L'uso di primitive container (invece di gestori di pacchetti) per eseguire il software riduce il sovraccarico di gestione.

b) Maggiore sicurezza dagli aggiornamenti automatici del sistema operativo: gli aggiornamenti a Bottlerocket vengono applicati come una singola unità che può essere ripristinata se necessario, eliminando il rischio di aggiornamenti "falliti" che possono lasciare il sistema in uno stato inutilizzabile. Gli errori di aggiornamento sono comuni con i sistemi operativi generici a causa di errori irreversibili durante gli aggiornamenti pacchetto per pacchetto. In Bottlerocket, gli aggiornamenti di sicurezza possono essere applicati automaticamente non appena sono disponibili in modo minimamente invasivo ed essere ripristinati in caso di errori.

c) Open source e disponibilità universale: un modello di sviluppo aperto consente a clienti, partner e tutte le parti interessate di apportare modifiche al codice e al design di Bottlerocket.

d) Premium Support: l'uso di build di Bottlerocket fornite da AWS su Amazon EC2 è coperto dagli stessi piani di supporto AWS che coprono anche i servizi AWS come Amazon EC2, Amazon EKS, Amazon ECR, ecc.

In che modo Bottlerocket è diverso da Amazon Linux?

Amazon Linux è un sistema operativo generico per l'esecuzione di un'ampia gamma di applicazioni fornite in pacchetti con RPM Package Manager o container. Amazon Linux è ottimizzato per fornire la possibilità di configurare ogni istanza secondo necessità per il suo carico di lavoro utilizzando strumenti tradizionali come yum, ssh, tcpdump, netconf, ecc. Bottlerocket, d'altra parte, è progettato appositamente per l'esecuzione di container e consente di gestire un gran numero di host di container in modo identico con l'automazione. Nello specifico, Bottlerocket differisce da Amazon Linux nei seguenti modi:

  • Bottlerocket non ha un gestore di pacchetti e il software può essere eseguito solo come container. Gli aggiornamenti a Bottlerocket vengono applicati e possono essere ripristinati in un unico passaggio atomico, riducendo gli errori di aggiornamento.
  • Il meccanismo principale per gestire gli host Bottlerocket è con un orchestratore di container come Amazon EKS. A differenza di Amazon Linux, l'accesso a singole istanze di Bottlerocket è destinato a essere un'operazione rara per il debug e la risoluzione dei problemi avanzati.

Le AMI ottimizzate per EKS ed ECS basate su Amazon Linux 2 continueranno a essere supportate?

Le attuali AMI ottimizzate per EKS basate su Amazon Linux saranno supportate e continueranno a ricevere aggiornamenti di sicurezza. Consulta AMI Amazon Linux 2 ottimizzate per EKS e AMI ottimizzate per ECS per avere maggiori dettagli sulla durata del supporto.  

Quali sono i componenti principali di Bottlerocket?

I componenti principali di Bottlerocket includono:

  • Sistema operativo minimo che include il kernel Linux, il software di sistema e containerd come runtime di container.
  • Meccanismo di aggiornamento atomico per applicare e ripristinare gli aggiornamenti del sistema operativo in un unico passaggio. 
  • Integrazioni con orchestratori di container come Amazon EKS per gestire e orchestrare gli aggiornamenti.
  • "Container di amministrazione" che può essere eseguito facoltativamente per la risoluzione dei problemi e il debug avanzati.

Come posso applicare gli aggiornamenti a Bottlerocket?

Gli aggiornamenti di Bottlerocket vengono scaricati automaticamente dai repository AWS preconfigurati quando diventano disponibili. È necessario un riavvio di Bottlerocket per applicare gli aggiornamenti e può essere avviato manualmente o gestito dall'orchestratore come Amazon EKS. È necessario selezionare il meccanismo appropriato per gestire i riavvii in base alla tolleranza delle applicazioni ai riavvii e alle esigenze operative. Se l'applicazione è stateless e resiliente ai riavvii, i riavvii possono essere eseguiti immediatamente dopo il download degli aggiornamenti. Se stai eseguendo carichi di lavoro stateful tradizionali (ad esempio database, applicazioni line-of-business di lunga durata e così via) in contenitori che non sono resilienti ai riavvii, dovrai assicurarti che lo stato sia preservato prima del riavvio.

I riavvii di Bottlerocket possono essere gestiti da orchestratori come Amazon EKS svuotando e riavviando i container tra gli host per consentire aggiornamenti in sequenza in un cluster per ridurre le interruzioni. È inoltre possibile eseguire il rollback degli aggiornamenti a Bottlerocket in modo sicuro in caso di errori tramite agenti di orchestrazione supportati o con un'azione manuale.

Quali sono i passaggi per implementare e utilizzare Bottlerocket con Kubernetes?

Puoi implementare e utilizzare Bottlerocket utilizzando la seguente procedura:

Fase 1: puoi implementare Bottlerocket come qualsiasi altro sistema operativo in una macchina virtuale. Su AWS, Bottlerocket può essere implementato su istanze EC2 dalla console, l'API o la CLI. È necessario fornire i dettagli di configurazione tramite i dati utente per ogni istanza Bottlerocket per registrarsi in un cluster Amazon EKS.

Fase 2: per utilizzare Bottlerocket con il tuo orchestratore, dovrai distribuire un componente di integrazione nel tuo cluster. Il componente di integrazione consente all'agente di orchestrazione di iniziare riavvii, eseguire il rollback di aggiornamenti e sostituire i container in modo minimamente invasivo per gli aggiornamenti in sequenza.

Consulta la documentazione di Bottlerocket per le operazioni per implementare e utilizzare l'operatore di aggiornamento Bottlerocket sui cluster Amazon EKS.

Posso usare Bottlerocket senza un orchestratore di container?

Sì, puoi eseguire Bottlerocket come sistema operativo autonomo senza un orchestratore sul tuo laptop o server per casi d'uso di sviluppo e test. Puoi utilizzare le utilità nel "container di amministrazione" per amministrare e aggiornare Bottlerocket.  

Quali piattaforme di elaborazione e tipi di istanze EC2 supporta Bottlerocket?

Le build Bottlerocket di AWS sono supportate su famiglie di istanze HVM ed EC2 Bare Metal, ad eccezione dei tipi di istanze P, G, F e INF. Bottlerocket richiede almeno 1 vCPU e 512 MB di RAM. Bottlerocket non supporta i tipi di istanza PV.

Come posso iniziare a utilizzare Bottlerocket su AWS?

AWS fornisce un'Amazon Machine Image (AMI) per Bottlerocket che puoi utilizzare per l'esecuzione su tipi di istanze EC2 supportati dalla console AWS, dalla CLI e dall'SDK. AWS fornirà build Bottlerocket preconfigurate per l'uso con EKS ed ECS. Puoi usare EKS per aggiornare e gestire il sistema operativo con interruzioni minime senza dover accedere a ogni istanza del sistema operativo. L'operatore Bottlerocket per Kubernetes ti consente di eseguire operazioni di gestione del sistema operativo come attività come l'avvio di riavvii e il rollback degli aggiornamenti con interruzioni minime.

Come viene eseguito il software su Bottlerocket?

Puoi eseguire le tue applicazioni containerizzate, incluso il software ISV di terze parti su un'istanza di Bottlerocket in esecuzione utilizzando il tuo orchestratore di container. Puoi anche includere il tuo software e gli script di avvio in Bottlerocket durante la personalizzazione dell'immagine. Consulta la documentazione di Bottlerocket per ulteriori dettagli.

Quanto costa Bottlerocket?

Le build di Bottlerocket fornite da AWS sono disponibili gratuitamente su tutte le piattaforme supportate. Amazon EC2 standard si applica per l'esecuzione di istanze Amazon EC2.

È disponibile una roadmap pubblica?

Sì!

Versioni multiple

Come viene definita la versione dei rilasci Bottlerocket?

Le build fornite da AWS di Bottlerocket seguono uno schema semantico di determinazione della versione del tipo "principale.secondaria.patch". Versioni secondarie di Bottlerocket verranno rilasciate più volte durante l'anno con modifiche come il supporto per le nuove piattaforme EC2, il supporto per i nuovi agenti di orchestrazione e gli aggiornamenti ai componenti open source. Lo schema di versione indicherà se gli aggiornamenti contengono modifiche sostanziali.

Supporto

Che tipo di supporto fornisce AWS per Bottlerocket?

Le build di Bottlerocket fornite da AWS riceveranno aggiornamenti di sicurezza, correzioni di bug e saranno coperte dai piani di supporto AWS. Il periodo di supporto per una determinata build dipenderà dalla versione dell'agente di orchestrazione del container in uso. Le build di Bottlerocket verranno deprecate quando la versione dell'agente di orchestrazione corrispondente sarà deprecata. Ad esempio, aws-k8s-1.15, che è la build Bottlerocket per Kubernetes 1.15, non è più supportata. Ciò è in linea con Kubernetes 1.15 che non riceve più supporto a monte. Consigliamo ai clienti di sostituire i nodi aws-k8s-1.15 con una build più recente supportata dal cluster.

Inoltre, il supporto della community per Bottlerocket è disponibile su GitHub, dove puoi pubblicare domande, richieste di funzionalità e segnalare bug. I dettagli sui rilasci e sulle correzioni ai CVE saranno pubblicati nel log delle modifiche di Bottlerocket.

Aggiornamenti

Che tipi di aggiornamenti sono disponibili per Bottlerocket?

AWS fornisce aggiornamenti pre-testati per Bottlerocket che vengono applicati in un unico passaggio. Questi aggiornamenti possono anche essere ripristinati in un unico passaggio a uno stato valido noto. Di conseguenza, gli aggiornamenti "falliti" che possono rendere il sistema inutilizzabile a causa di stati incoerenti che richiedono una riparazione manuale non si verificano con Bottlerocket. Con gli aggiornamenti atomici in un unico passaggio, la complessità è inferiore, il che riduce gli errori di aggiornamento.

Come posso applicare gli aggiornamenti a Bottlerocket?

Gli aggiornamenti alle build fornite da AWS di Bottlerocket vengono scaricati automaticamente dai repository AWS preconfigurati quando diventano disponibili. È necessario un riavvio di Bottlerocket per applicare gli aggiornamenti e può essere avviato manualmente o gestito dall'orchestratore come Amazon EKS. È necessario selezionare il meccanismo appropriato per gestire i riavvii in base alla tolleranza delle applicazioni ai riavvii e alle esigenze operative. Se l'applicazione è stateless e resiliente ai riavvii, i riavvii possono essere eseguiti immediatamente dopo il download degli aggiornamenti. Se stai eseguendo carichi di lavoro stateful tradizionali (ad esempio database, applicazioni line-of-business di lunga durata e così via) in contenitori che non sono resilienti ai riavvii, dovrai assicurarti che lo stato sia preservato prima del riavvio.

I riavvii di Bottlerocket possono essere gestiti da orchestratori come Amazon EKS svuotando e riavviando i container tra gli host per consentire aggiornamenti in sequenza in un cluster per ridurre le interruzioni. Per impostazione predefinita, Bottlerocket si aggiornerà automaticamente all'ultima versione sicura all'avvio. È inoltre possibile eseguire il rollback degli aggiornamenti a Bottlerocket in modo sicuro in caso di errori tramite agenti di orchestrazione supportati o con un'azione manuale.

In che modo Bottlerocket aiuta a garantire che gli aggiornamenti siano minimamente invasivi?

Le integrazioni con orchestratori come Amazon EKS aiutano a rendere gli aggiornamenti a Bottlerocket invasivi al minimo. Durante il processo di aggiornamento, l'agente di orchestrazione scarica i container sugli host in fase di aggiornamento e li posiziona su altri host liberi nel cluster. Inoltre, se gli aggiornamenti non riescono l'orchestratore esegue il rollback degli host alla versione precedente di Bottlerocket.

Compatibilità e migrazione

Quali immagini di container posso eseguire nei container su Bottlerocket?

Bottlerocket può eseguire tutte le immagini del container che soddisfano la specifica del formato immagine OCI e le immagini Docker.

Posso spostare i miei container in esecuzione su Amazon Linux 2 su Bottlerocket?

Sì, puoi spostare i tuoi container su Amazon Linux 2 e Bottlerocket senza modifiche.

Quando non va utilizzato Bottlerocket?

Se i flussi di lavoro operativi per l'esecuzione dei container comportano l'installazione di software sul sistema operativo host con yum, l'invio diretto di ssh nelle istanze, la personalizzazione di ogni istanza individualmente o l'esecuzione di software ISV di terze parti non containerizzato (ad esempio, agenti per la registrazione e il monitoraggio), Amazon Linux 2 potrebbe essere più adatto. Bottlerocket è ottimizzato per eseguire e gestire grandi distribuzioni containerizzate e non consente facilmente molte di queste attività.

Risoluzione di problemi e sicurezza

Come viene eseguito il debug dei problemi con Bottlerocket?

Puoi eseguire un "container di amministrazione" utilizzando l'API di Bottlerocket (richiamata tramite i dati utente o AWS Systems Manager) e quindi accedere con SSH per il debug e la risoluzione dei problemi avanzati con privilegi elevati. AWS fornisce il container di amministrazione che consente di installare e utilizzare strumenti di debug come sosreport, traceroute, strace, tcpdump. L'accesso a singole istanze di Bottlerocket è destinato a essere un'operazione rara per il debug e la risoluzione dei problemi avanzati.

Cos'è il container di amministrazione?

Un container di amministrazione è un'immagine del container Amazon Linux che contiene utilità per la risoluzione dei problemi e il debug di Bottlerocket e viene eseguito con privilegi elevati. L'esecuzione del container degli strumenti può essere avviata tramite dati utente o API Bottlerocket.

Quali caratteristiche di isolamento e sicurezza dei container fornisce Bottlerocket?

Bottlerocket consente aggiornamenti di sicurezza automatici e riduce l'esposizione agli attacchi di sicurezza includendo solo il software essenziale per ospitare i container. Bottlerocket utilizza i gruppi di controllo dei container (cgroup) e gli spazi dei nomi del kernel per l'isolamento tra i container. Viene fornito anche con Security-Enhanced Linux (SELinux) in modalità di applicazione e seccomp. eBPF nel kernel riduce la necessità di moduli del kernel per molte operazioni di sistema di basso livello fornendo un framework di traccia a basso sovraccarico per tracciare I/O, operazioni del file system, utilizzo della CPU, rilevamento delle intrusioni e risoluzione dei problemi. Bottlerocket è utilizzato con device-mapper-verity (dm-verity), una funzionalità del kernel Linux che fornisce il controllo dell'integrità per aiutare a prevenire i rootkit che possono trattenere i privilegi root.

Open source e marchi

Che cos'è la licenza Open Source per Bottlerocket?

Il codice di Bottlerocket è concesso su licenza con Apache 2.0 OR MIT. Amazon ha scritto il suo Bottlerocket in Rust, quindi abbiamo scelto una licenza che si adatta facilmente a quella community. Il codice di terze parti sottostante, come il kernel Linux, rimane soggetto alla sua licenza originale.

Come posso visualizzare e contribuire alle modifiche del codice sorgente a Bottlerocket??

Bottlerocket è rilasciato come progetto open source su GitHub. Documenti di progettazione, codice, strumenti di compilazione, test e documentazione saranno ospitati su GitHub. Utilizzeremo i sistemi di tracciamento dei bug e delle funzionalità di GitHub per la gestione del progetto. Puoi visualizzare e contribuire al codice sorgente di Bottlerocket utilizzando i flussi di lavoro GitHub standard.

Come posso produrre build personalizzate di Bottlerocket che includono le mie modifiche?

Puoi effettuare il fork del repository GitHub, apportare le modifiche e seguire la nostra guida alla compilazione.

Posso creare e ridistribuire le mie build di Bottlerocket?

Sì. Se crei Bottlerocket da un'origine non modificata e ridistribuisci i risultati, puoi utilizzare "Bottlerocket" solo se è chiaro, sia nel nome della tua distribuzione che nel contenuto ad essa associato, che la tua distribuzione è la tua build di Bottlerocket di Amazon e non la build ufficiale e devi identificare il commit da cui è stato creato, inclusa la data di commit.

Come posso utilizzare i marchi Bottlerocket per fare riferimento alla mia versione di Bottlerocket di Amazon che ho adattato per un diverso orchestratore di container?

Se modifichi Bottlerocket di Amazon in modo che funzioni con un diverso orchestratore di container, puoi utilizzare "Bottlerocket Remix" per fare riferimento alla tua versione in conformità con le linee guida delle policy. Se disponi dei diritti per utilizzare i marchi di tale agente di orchestrazione di contenitori in questo modo, puoi aggiungere il nome di tale agente di orchestrazione di container a "Bottlerocket Remix".

Quali modifiche al sistema operativo devo apportare a una versione modificata di Bottlerocket per rispettare questa policy?

Per utilizzare il nome "Bottlerocket Remix" o per rimuovere i marchi Bottlerocket, è necessario modificare il file os-release. Questo può essere fatto modificando packages/release/release.spec e tools/rpm2img. Per essere conformi a questa policy, i nomi della root di sistema (/x86_64-bottlerocket-linux-gnu/sys-root), le etichette delle partizioni, i percorsi delle directory e le descrizioni dei file di servizio non devono essere modificati.