Généralités

Qu'est-ce que Bottlerocket ?

Bottlerocket est un nouveau système d'exploitation Linux open source spécialement conçu pour exécuter des 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 qu'Amazon EKS 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. 

Q : Quels sont les avantages Bottlerocket ?

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 aux systèmes d'exploitation généraux. 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, Amazon ECR, etc.

Qu'est-ce qui distingue Bottlerocket d'Amazon Linux ?

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 son application à l'aide d'outils traditionnels tels que yum, ssh, tcpdump, netconf, etc. Bottlerocket, en revanche, 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 les erreurs de mise à jour.
  • Le principal mécanisme pour gérer les hôtes Bottlerocket est un orchestrateur de conteneurs comme Amazon EKS. 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és.

Les AMI optimisées par EKS et ECS basées sur Amazon Linux 2 continueront-elles à être prises en charge ?

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.  

Quels sont les principaux composants de Bottlerocket ?

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 qu'Amazon EKS 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.

Comment appliquer des mises à jour à Bottlerocket ?

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 qu'Amazon EKS. 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, 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 conteneurs peuvent être gérés par des orchestrateurs tels qu'Amazon EKS 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 être également annulées en toute sécurité en cas de défaillance via les orchestrateurs pris en charge ou par une action manuelle.

Quelles sont les étapes du déploiement et de l'exploitation de Bottlerocket à l'aide de Kubernetes ?

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, l'API, la CLI. Vous devez fournir les détails de configuration via les données 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.

Consultez 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.

Puis-je utiliser Bottlerocket sans utiliser un orchestrateur de conteneurs ?

Oui, vous pouvez exécuter Bottlerocket en tant que système d'exploitation sans orchestrateur sur votre ordinateur portable ou votre serveur pour des cas d'utilisation de développement et de test. Vous pouvez utiliser les utilitaires dans le « conteneur d'administration » pour administrer et mettre à jour Bottlerocket.  

Quelles plateformes de calcul et quels types d'instances EC2 Bottlerocket prend-il en charge ?

Les générations Bottlerocket d'AWS sont prises en charge sur les familles d'instances HVM et EC2 métal nu, à l'exception des types d'instances P, G, F et INF. Bottlerocket nécessite au moins 1 vCPU et 512 Mo de RAM. Bottlerocket ne prend pas en charge les types d'instances PV.

Comment puis-je commencer à utiliser Bottlerocket sur AWS ?

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 et ECS. Vous pouvez utiliser EKS 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. L'opérateur Bottlerocket pour Kubernetes vous permet d'effectuer des opérations de gestion du système d'exploitation, notamment des activités telles que le lancement de redémarrages et l'annulation des mises à jour, avec un minimum de perturbations.

Comment exécuter le logiciel sur Bottlerocket ?

Vous pouvez exécuter vos applications conteneurisées, y compris les logiciels FIL tiers, sur une instance de Bottlerocket en cours d'exécution en utilisant votre orchestrateur de conteneurs. Vous pouvez également utiliser l'inclusion de vos logiciels et scripts de démarrage dans Bottlerocket pendant la personnalisation de l'image. Consulter la documentation de Bottlerocket pour plus d'informations.

Quelle est la tarification de Bottlerocket ?

Les générations de Bottlerocket fournies par AWS sont disponibles gratuitement sur toutes les plateformes prises en charge. Amazon EC2 standard s'applique pour l'exécution des instances Amazon EC2.

Disposez-vous d'une feuille de route publique ?

Oui.

Gestion des versions

Comment les versions publiées de Bottlerocket sont-elles gérées ?

Les générations de Bottlerocket fournis par AWS suivent un schéma de gestion de 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.

Support

Quel type de support AWS fournit-il à Bottlerocket ?

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.15 qui est la version Bottlerocket de Kubernetes 1.15. Cela est en droite ligne avec le que Kubernetes 1.15 ne reçoit plus de support en amont. Nous recommandons aux clients de remplacer les nœuds aws-k8s-1.15 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 vulnérabilités et expositions courantes seront publiés dans le journal des modifications de Bottlerocket.

Mises à jour

Quels types de mises à jour sont disponibles pour Bottlerocket ?

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.

Comment appliquer des mises à jour à Bottlerocket ?

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 qu'Amazon EKS. 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, 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 conteneurs peuvent être gérés par des orchestrateurs tels qu'Amazon EKS, 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.

Comment Bottlerocket garantit-il que les mises à jour soient le moins perturbantes possible ?

Les intégrations avec des orchestrateurs tels qu'Amazon EKS 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

Quelles images de conteneurs est-il possible dans des conteneurs sur Bottlerocket ?

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

Puis-je transférer mes conteneurs fonctionnant sur Amazon Linux 2 vers Bottlerocket ?

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

Quand ne dois-je pas utiliser Bottlerocket ?

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é

Comment résoudre les problèmes avec Bottlerocket ?

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.

Qu'est-ce que le conteneur administration ?

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. L'exécution du conteneur d'outils peut être lancée par les données de l'utilisateur ou les API de Bottlerocket.

Quelles fonctions d'isolement et de sécurité des conteneurs Bottlerocket fournit-il ?

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.

Open source et marques

Quelle est la licence Open Source de Bottlerocket ?

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.

Comment puis-je voir les modifications du code source de Bottlerocket et y contribuer ?

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.

Comment puis-je produire des générations personnalisées de Bottlerocket qui incluent mes propres modifications ?

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

Puis-je créer et redistribuer mes propres générations de Bottlerocket ?

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.

Comment puis-je utiliser les marques Bottlerocket pour faire référence à ma propre version de Bottlerocket d'Amazon que j'ai adaptée à un orchestrateur de conteneurs différent ?

Si vous modifiez Bottlerocket d'Amazon pour qu'il fonctionne avec un orchestrateur de conteneurs différent, vous pouvez utiliser « Bottlerocket Remix » pour faire référence à votre version conformément aux directives de la politique. Si vous avez le droit d'utiliser les marques de cet orchestrateur de conteneurs de cette manière, vous pouvez ajouter son nom à « Bottlerocket Remix ».

Quelles modifications de système d'exploitation dois-je apporter à une version modifiée de Bottlerocket pour respecter cette politique ?

Vous devez modifier le fichier os-release pour utiliser votre nom « Bottlerocket Remix » ou pour retirer les marques Bottlerocket. Pour ce faire, modifiez packages/release/release.spec et 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.