FAQ Bottlerocket

Questions d’ordre général

Bottlerocket est une distribution Linux sponsorisée et prise en charge par AWS, qui est destinée et conçue pour héberger des charges de travail de conteneurs. Avec Bottlerocket, vous pouvez améliorer la disponibilité de vos déploiements conteneurisés et réduire les coûts opérationnels en automatisant les mises à jour de votre infrastructure de conteneurs. Bottlerocket ne comprend que le logiciel essentiel à l'exécution des conteneurs, ce qui améliore l'utilisation des ressources, réduit la surface d'attaque de la sécurité et diminue les coûts de gestion. Il s’intègre également aux orchestrateurs de conteneurs (tels que Kubernetes et Amazon ECS), afin de réduire davantage les frais de gestion et d’exploitation lors de la mise à jour des hôtes de conteneurs dans un cluster.

Bottlerocket est disponible dans toutes les régions commerciales AWS, GovCloud et dans les régions AWS Chine. Bottlerocket est le système d'exploitation par défaut pour EKS Anywhere sur VMWare vSphere et matériel nu. Bottlerocket peut également être utilisé sur site pour les composants master dans VMware ainsi que les composants master dans EKS Anywhere for Kubernetes sur matériel nu.

a) Temps de fonctionnement plus élevé avec un coût opérationnel et une complexité de gestion moindres : en n'incluant que les composants nécessaires à l'exécution des conteneurs, Bottlerocket utilise moins les ressources, accélère le démarrage et réduit la surface d'attaque de la sécurité par rapport à Linux. Un encombrement moindre permet de réduire les coûts en raison de la diminution de l'utilisation des ressources de stockage, de calcul et de réseau. L'utilisation de primitives de conteneurs (au lieu de gestionnaires de packages) pour exécuter des logiciels réduit les coûts de gestion.

b) Sécurité renforcée grâce aux mises à jour automatiques du système d'exploitation : les mises à jour de Bottlerocket sont appliquées en une seule fois et peuvent être annulées, si nécessaire, ce qui élimine le risque de mises à jour « bâclées » qui peuvent laisser le système dans un état inutilisable. Les échecs de mise à jour sont courants dans les systèmes d'exploitation polyvalents en raison des échecs irrécupérables lors des mises à jour package par package. Dans Bottlerocket, les mises à jour de sécurité peuvent être appliquées automatiquement dès qu'elles sont disponibles, de manière peu perturbatrice, et être annulées en cas de défaillance.

c) Open source et disponibilité universelle : un modèle de développement ouvert permet aux clients, aux partenaires et à toutes les parties intéressées d'apporter des modifications au code et à la conception de Bottlerocket.

d) Support haut de gamme : l'utilisation des générations de Bottlerocket fournies par AWS sur Amazon EC2 est couverte par les mêmes plans de AWS Support qui couvrent également les services AWS tels qu'Amazon EC2, Amazon EKS ou Amazon ECR.

Amazon Linux est un système d'exploitation polyvalent permettant d'exécuter un large éventail d'applications qui sont empaquetées avec RPM Package Manager ou les conteneurs. Amazon Linux est optimisé pour permettre de configurer chaque instance en fonction de sa charge de travail à l'aide d'outils traditionnels tels que yum, ssh, tcpdump ou netconf. En revanche, Bottlerocket est spécialement conçu pour l'exécution de conteneurs et vous permet de gérer un grand nombre d'hôtes de conteneurs de manière identique avec l'automatisation. Plus précisément, Bottlerocket diffère d'Amazon Linux de la manière suivante :

  • Bottlerocket ne dispose pas d'un gestionnaire de paquets et les logiciels ne peuvent être exécutés que sous forme de conteneurs. Les mises à jour de Bottlerocket sont appliquées et peuvent être annulées en une seule étape atomique, ce qui réduit en conséquence les erreurs de mise à jour.
  • Le principal mécanisme pour gérer les hôtes Bottlerocket est un orchestrateur de conteneurs comme Kubernetes. Contrairement à Amazon Linux, la connexion à des instances individuelles de Bottlerocket est destinée à être une opération peu fréquente pour le débogage et le dépannage avancé.

Les principaux composants du Bottlerocket sont les suivants :

  • Système d'exploitation minimal qui comprend le noyau Linux, le logiciel système et containerd comme environnement d'exécution de conteneur
  • Mécanisme de mise à jour atomique pour appliquer et annuler les mises à jour du système d'exploitation en une seule étape.
  • Intégrations avec des orchestrateurs de conteneurs tels que Kubernetes pour gérer et orchestrer les mises à jour.
  • « Conteneur d'administration » qui peut être exécuté de manière facultative pour le dépannage et le débogage avancés.

Les générations de Bottlerocket fournies par AWS sont disponibles sans coûts supplémentaires. Vous ne payez que les instances EC2 que vous utilisez.

Oui. Bottlerocket utilise la tarification des instances Amazon EC2 Linux/Unix. La facturation à la seconde est prise en charge si vous disposez d’une génération de Bottlerocket native d’EC2 fournie par AWS. Veuillez noter que les produits d’AWS Marketplace générés avec Bottlerocket en tant que fondation disposent d’un coût horaire associé.

Veuillez rejoindre la communauté Bottlerocket sur Meetup pour en savoir plus sur les derniers évènements Bottlerocket et rencontrer la communauté. Des réunions sont régulièrement organisées.

Bottlerocket prend actuellement en charge NVIDIA Fabric Manager pour les charges de travail multi-GPU et le découpage temporel des GPU NVIDIA. Fabric Manager configure les structures de mémoire NVSwitch pour former une matrice de mémoire parmi tous les GPU participants, et surveille les NVLink qui prennent en charge la matrice, ce qui permet d’améliorer les performances des applications et l’utilisation des ressources sur un grand cluster de GPU. Pour simplifier, il traite plusieurs GPU comme un pool de mémoire unique pour les tâches informatiques hautes performances, comme l’entraînement de l’IA. La fonction de découpage temporel des GPU NVIDIA divise le temps de traitement GPU en intervalles plus courts, ou « tranches », ce qui permet de planifier plusieurs modèles d’AI/de ML plus petits sur un GPU surexploité.

Utilisation de Bottlerocket

AWS fournit une Amazon Machine Image (AMI) pour Bottlerocket que vous pouvez utiliser pour l'exécuter sur les types d'instance EC2 pris en charge à partir de la console AWS, de la CLI et du SDK. AWS fournira des générations Bottlerocket préconfigurées pour être utilisées avec EKS, ECS, VMware et EKS Anywhere sur matériel nu. Vous pouvez utiliser l’orchestrateur pour mettre à jour et gérer le système d'exploitation avec un minimum de perturbations sans avoir à vous connecter à chaque instance du système d'exploitation.

Vous pouvez lancer des applications conteneurisées sur une instance Bottlerocket par l’intermédiaire de votre orchestrateur. Vous pouvez également utiliser l'inclusion de vos logiciels et scripts de démarrage dans Bottlerocket pendant la personnalisation de l'image. Consultez la documentation de Bottlerocket pour plus d’informations.

Vous pouvez déployer et gérer Bottlerocket en suivant les étapes suivantes :

  • Étape 1 : vous pouvez déployer Bottlerocket de la même manière que tout autre système d'exploitation dans une machine virtuelle. Sur AWS, vous pouvez déployer Bottlerocket sur des instances EC2 depuis la console de gestion AWS, via l’API ou AWS CLI. Vous devez fournir les détails de configuration via les données d’utilisateur pour chaque instance de Bottlerocket à enregistrer dans un cluster Amazon EKS.
  • Étape 2 : pour faire fonctionner Bottlerocket avec votre orchestrateur, vous devez déployer un composant d'intégration dans votre cluster. Le composant d'intégration permet à l'orchestrateur d'initier des redémarrages, d'annuler les mises à jour et de remplacer les conteneurs de manière à réduire les perturbations lors des mises à niveau continues.

Les mises à jour de Bottlerocket sont automatiquement téléchargées depuis des référentiels AWS préconfigurés lorsqu'elles sont disponibles. Il est nécessaire de redémarrer Bottlerocket pour appliquer les mises à jour, et il peut être initié manuellement ou géré par l'orchestrateur, tel que Kubernetes. Vous devez choisir le mécanisme approprié pour gérer les redémarrages en fonction de la tolérance de vos applications aux redémarrages et de vos besoins opérationnels. Si votre application est sans état et résiliente aux redémarrages, les redémarrages peuvent être effectués immédiatement après le téléchargement des mises à jour. Si vous exécutez des charges de travail traditionnelles avec état (par exemple, des bases de données, des applis sectorielles longue durée, etc.) dans des conteneurs qui ne sont pas résilients aux redémarrages, vous devez vous assurer que l'état est préservé avant les redémarrages.

Les redémarrages de Bottlerocket peuvent être gérés par des orchestrateurs, en vidant et en redémarrant les conteneurs sur les hôtes, afin de permettre des mises à jour continues dans un cluster pour réduire les perturbations. Les mises à jour de Bottlerocket peuvent également être annulées en toute sécurité en cas de défaillance via les orchestrateurs pris en charge ou par une action manuelle. Reportez-vous à la documentation de Bottlerocket, pour connaître les étapes du déploiement et de l’utilisation de « l’opérateur de mise à jour de Bottlerocket » dans les clusters Amazon EKS et clusters Amazon ECS.

Gestion des versions et des variantes

Les générations de Bottlerocket fournies par AWS suivent un schéma de gestion des versions sémantique « major.minor.patch ». Des versions mineures de Bottlerocket seront publiées plusieurs fois dans l'année avec des changements tels que la prise en charge de nouvelles plateformes EC2, la prise en charge de nouveaux agents orchestrateurs et des mises à jour de composants open source. Le schéma de version indiquera si les mises à jour contiennent des changements de rupture.

Une variante est une génération de Bottlerocket qui prend en charge différentes fonctionnalités ou caractéristiques d’intégration. AWS fournit des variantes Bottlerocket qui prennent en charge les composants master Kubernetes dans EC2, dans VMware et sur matériel nu. AWS fournit également des variantes Bottlerocket pour ECS dans EC2. Vous pouvez accéder à la liste de toutes les variantes fournies par AWS.

Oui. Bottlerocket propose des variantes qui prennent en charge les types d'instances Amazon EC2 basés sur les GPU NVIDIA sur Amazon Elastic Container Service (Amazon ECS) et les composants master Kubernetes sur EC2. Veuillez consulter les articles de blog concernant la manière d’utiliser ces variantes sur ECS et sur EKS.

Les mises à jour des fonctionnalités de Bottlerocket (versions mineures, par exemple 1.10.0, 1.11.0) se produisent généralement avec une cadence de 6 à 8 semaines. Les corrections de bogues et de CVE (versions patchs, par exemple 1.10.1, 1.11.1) sont effectuées selon les besoins, et la cadence de publication dépend de la gravité du problème. Veuillez vous référer au CHANGELOG qui montre toutes les versions de Bottlerocket avec leur chronologie.

Support

Les générations de Bottlerocket fournies par AWS recevront des mises à jour de sécurité, des corrections de bogues, et sont couvertes par les plans AWS Support. La période de support d'une génération dépend de la version de l'orchestrateur de conteneurs utilisé. Les générations de Bottlerocket seront obsolètes lorsque la version correspondante de l'orchestrateur le sera. Par exemple, nous ne prenons plus en charge aws-k8s-1.19 qui est la version Bottlerocket de Kubernetes 1.19. Cela est en droite ligne avec le fait que Kubernetes 1.19 ne reçoit plus de support en amont. Nous recommandons aux clients de remplacer les nœuds aws-k8s-1.19 par une génération plus récente prise en charge par votre cluster. En outre, un support communautaire pour Bottlerocket est disponible sur GitHub, où vous pouvez poser des questions, demander des fonctions et signaler des bogues. Des détails sur les publications et les correctifs pour les CVE seront publiés dans le journal des modifications de Bottlerocket.

Les AMI actuelles optimisées par EKS qui sont basées sur Amazon Linux seront prises en charge et continueront à recevoir des mises à jour de sécurité. Consultez AMI Amazon Linux 2 optimisée par EKS et AMI optimisée par ECS pour plus de détails sur les durées de vie de support.

Les générations Bottlerocket d’AWS sont prises en charge sur les familles d’instances HVM et EC2 sur matériel nu, à l’exception des types d’instances P, G4ad, F et INF.

Oui. Veuillez vous reporter à cet article de blog pour plus d’informations.

Mises à jour

AWS fournit des mises à jour pré-testées pour Bottlerocket qui sont appliquées en une seule étape. Ces mises à jour peuvent également être annulées en une seule étape à un état connu. Par conséquent, les mises à jour « bâclées » qui peuvent rendre le système inutilisable en raison d'états incohérents nécessitant une réparation manuelle ne se produisent pas avec Bottlerocket. Avec les mises à jour atomiques en une seule étape, la complexité est réduite, ce qui diminue les échecs de mise à jour.

Les mises à jour des générations de Bottlerocket fournies par AWS sont automatiquement téléchargées depuis des référentiels AWS pré-configurés lorsqu'elles sont disponibles. Il est nécessaire de redémarrer Bottlerocket pour appliquer les mises à jour, et il peut être initié manuellement ou géré par l'orchestrateur, tel que Kubernetes. Vous devez choisir le mécanisme approprié pour gérer les redémarrages en fonction de la tolérance de vos applications aux redémarrages et de vos besoins opérationnels. Si votre application est sans état et résiliente aux redémarrages, les redémarrages peuvent être effectués immédiatement après le téléchargement des mises à jour. Si vous exécutez des applications traditionnelles avec état (par exemple, des bases de données, des applis sectorielles longue durée) dans des conteneurs qui ne sont pas résilients aux redémarrages, vous devez vous assurer que l'état est préservé avant les redémarrages.

Les redémarrages de Bottlerocket peuvent être gérés par des orchestrateurs tels que Kubernetes, qui drainent et redémarrent les conteneurs sur les hôtes pour permettre des mises à jour continues dans un cluster, afin de réduire les perturbations. Par défaut, Bottlerocket se met automatiquement à jour avec la dernière version sécurisée au démarrage. Les mises à jour de Bottlerocket peuvent être également annulées en toute sécurité en cas de défaillance via les orchestrateurs pris en charge ou par une action manuelle.

Les intégrations avec des orchestrateurs tels que Kubernetes permettent de réduire les perturbations des mises à jour de Bottlerocket. Pendant le processus de mise à jour, l'orchestrateur vide les conteneurs sur les hôtes en cours de mise à jour et les place sur d'autres hôtes vacants du cluster. L'orchestrateur restaure également la version précédente de Bottlerocket des hôtes si les mises à jour échouent.

Compatibilité et migration

Bottlerocket peut exécuter toutes les images de conteneurs qui répondent à la spécification OCI Image Format et les images Docker.

Oui, vous pouvez transférer vos conteneurs vers Amazon Linux 2 et Bottlerocket sans modifications.

Si vos flux opérationnels pour exécuter des conteneurs impliquent l'installation de logiciels sur le système d'exploitation hôte avec yum, l'accès direct aux instances par ssh, la personnalisation de chaque instance ou l'exécution de logiciels FIL tiers qui ne sont pas conteneurisés (par exemple, des agents pour la journalisation et la surveillance), Amazon Linux 2 est peut-être mieux adapté. Bottlerocket est optimisé pour exécuter et gérer de grands déploiements conteneurisés et ne permet pas d'exécuter facilement la plupart de ces activités.

Dépannage et sécurité

Vous pouvez exécuter un « conteneur d'administration » à l'aide de l'API de Bottlerocket (appelée via les données utilisateur ou AWS Systems Manager), puis vous connecter avec SSH pour un débogage et un dépannage avancés avec des privilèges élevés. AWS fournit le conteneur d'administration qui vous permet d'installer et d'utiliser des outils de débogage comme sosreport, traceroute, strace, tcpdump. La connexion à une instance individuelle de Bottlerocket est prévue pour être une opération peu fréquente pour le débogage et le dépannage avancés.

Un conteneur d'administration est une image de conteneur Amazon Linux qui contient des utilitaires pour le dépannage et le débogage de Bottlerocket et fonctionne avec des privilèges élevés. Veuillez vous reporter aux informations concernant l’utilisation du conteneur d’administration.

Bottlerocket permet de réaliser des mises à jour de sécurité automatiques et réduit l'exposition aux attaques de sécurité en n'incluant que le logiciel essentiel pour héberger les conteneurs. Bottlerocket utilise les groupes de contrôle des conteneurs (cgroups) et les espaces de noms du noyau pour l'isolement entre les conteneurs. Il est également fourni avec Security-Enhanced Linux (SELinux) en mode enforcing et seccomp. eBPF dans le noyau réduit le besoin de modules de noyau pour de nombreuses opérations du système de bas niveau en fournissant un cadre de traçage à faible coût pour les I/O, les opérations du système de fichiers, l'utilisation du CPU, la détection des intrusions et le dépannage. Bottlerocket utilise la fonction device-mapper-verity (dm-verity), une fonctionnalité du noyau Linux qui permet de vérifier l’intégrité pour prévenir les rootkits qui peuvent conserver les privilèges de l’administrateur.

Il existe différentes façons de récupérer les journaux des nœuds de Bottlerocket. Vous pouvez, par exemple, utiliser CloudWatch Container Insights ou Fluent Bit avec OpenSearch.

Oui, Bottlerocket a un CIS Benchmark. Le CIS Benchmark est un catalogue de paramètres de configuration axé sur la sécurité, qui aide les clients Bottlerocket à configurer ou à documenter toute configuration non conforme de façon simple et efficace. Le CIS Benchmark de Bottlerocket comprend à la fois des profils de configuration de niveau 1 et de niveau 2, et est accessible depuis le site internet de CIS.

À partir de la version 1.27.0, Bottlerocket inclut des variantes préconfigurées pour utiliser des modules cryptographiques conformes à la norme FIPS 140-3, notamment l’API Kernel Crypto Amazon Linux 2023 et AWS-LC.

Oui, vous pouvez passer la conformité PCI en utilisant Bottlerocket. L’ensemble de fonctionnalités optimisé et la réduction de la surface d’attaque signifie que les instances Bottlerocket exigent moins de configuration pour remplir les conditions de la PCI DSS. Le CIS Benchmark pour Bottlerocket est une ressource excellente pour le renforcement de l’assistance et prend en charge les exigences clients pour les standards de configuration sécurisée conformément à l’exigence 2.2 de la PCI DSS. Les clients peuvent également utiliser Fluent Bit pour prendre en charge les exigences clients pour les journaux d’audit au niveau du système d’exploitation, conformément à l’exigence 10.2 de la PCI DSS. AWS publie régulièrement de nouvelles instances Bottlerocket (corrigées) afin d'aider les clients à remplir les conditions 6.2 (v3.2.1) et 6.3.3 (v4.0) de la PCI DSS.

Oui, Bottlerocket est une fonctionnalité compatible avec HIPAA autorisée pour l'utilisation avec des charges de travail réglementées pour Amazon EC2 et Amazon EKS. Pour obtenir des conseils quant à la configuration d’Amazon EKS, veuillez consulter ce livre blanc pour plus d’informations.

Consultez le guide sur le renforcement et la validation de Bottlerocket lorsqu’il est utilisé avec Amazon EKS.

Oui. Amazon Inspector est un service de gestion des vulnérabilités qui recherche les vulnérabilités logicielles et les expositions réseau involontaires dans les charges de travail EC2 et de conteneurs. Amazon Inspector s'appuie sur l'agent AWS System Manager (SSM) pour rechercher les vulnérabilités. Dans les hôtes Bottlerocket, l’agent SSM s’exécute dans le conteneur d’hôte de contrôle. Vous devez donc vous assurer qu’il est activé dans vos hôtes.

Open source et marques

Le code de Bottlerocket sous licence Apache 2.0 OU MIT. Amazon a écrit son Bottlerocket en Rust. Nous avons donc choisi une licence qui convient bien à cette communauté. Le code tiers sous-jacent, comme le noyau Linux, reste soumis à sa licence d'origine.

Bottlerocket est développé comme projet open source sur GitHub. Les documents de conception, le code, les outils de génération, les tests et la documentation seront hébergés sur GitHub. Nous utiliserons les systèmes de suivi des bogues et des fonctions de GitHub pour la gestion du projet. Vous pouvez consulter le code source de Bottlerocket et y contribuer en utilisant les flux standard GitHub.

Vous pouvez séparer le référentiel GitHub, apporter vos modifications et suivre notre guide de génération.

Oui. Si vous produisez une génération Bottlerocket à partir de sources non modifiées et redistribuez les résultats, vous pouvez utiliser « Bottlerocket » uniquement s'il est clair dans le nom de votre distribution et dans le contenu qui lui est associé que votre distribution est votre génération de Bottlerocket d'Amazon et non pas la génération officielle. En outre, vous devez indiquer la validation à partir de laquelle elle est générée, y compris la date de validation.

Vous devez modifier le fichier os-release pour utiliser Bottlerocket conformément à cette politique ou pour supprimer les marques commerciales de Bottlerocket. Pour ce faire, modifiez packages/release/release.spec and tools/rpm2img. Les noms de la racine du système (/x86_64-bottlerocket-linux-gnu/sys-root), les étiquettes des partitions, les chemins des répertoires et les descriptions des fichiers de service n’ont pas besoin d’être modifiés pour être conformes à cette politique.

Si vous avez connaissance d'une utilisation confuse ou trompeuse ou d'une autre utilisation abusive des marques Bottlerocket, vous pouvez nous contacter comme décrit ci-dessus à l'adresse trademarks@amazon.com afin que nous puissions approfondir notre enquête.