La sortie d’AWS Bottlerocket éclaire le rôle différent que jouent aujourd’hui les OS dans un monde d’infrastructures virtualisées, containerisées et cloudifiées. Elle est l’occasion de revenir sur la nouvelle vague des « Container OS »…
Un système d’exploitation, aussi appelé OS (Operating System) est le logiciel de base de tout appareil informatique qui assure son démarrage et le pilotage du matériel, contrôle l’usage des ressources (les cœurs CPU, le mémoire, le GPU, etc.), gère l’exécution et la sécurité des applications et expose un certain nombre de services fondamentaux sur lesquels les logiciels peuvent s’appuyer pour afficher leur contenu dans des fenêtres ou accéder au réseau et à Internet par exemple. Durant des années, les éditeurs ont cherché à sans cesse enrichir les services proposés par les systèmes ou alors à les spécialiser pour le monde de l’embarqué par exemple.
La virtualisation par hyperviseur ou par containers a cependant changé la donne. Le cloud et les vastes infrastructures réparties ont soulevé de nouveaux problèmes et de nouvelles exigences.
Des OS pour la virtualisation
C’est pourquoi certains clouds ont cherché à créer leur propre distribution Linux optimisée en taille, spécialisée pour leurs besoins et dotée de mécanismes spécifiques simplifiant, unifiant et automatisant les mises à jour et la mise en œuvre de sécurités notamment.
Typiquement, Amazon développe depuis plusieurs années son Amazon Linux AMI, désormais remplacé par Amazon Linux 2, spécialement optimisé pour Amazon EC2 (Elastic Cloud Computing). L’idée était de proposer une distribution de Linux compacte et parfaitement intégrée à l’univers de services d’AWS pour animer les VM Linux exécutées sous AWS.
Oracle a adopté une approche très similaire sur Oracle Cloud et propose son fameux Oracle Autonomous Linux (basé sur Oracle Linux et binairement compatible RHEL) intégrant des fonctionnalités d’auto-patching.
L’ère des Container OS
Mais Amazon a également annoncé cette semaine la disponibilité générale d’une nouvelle distribution Linux « maison » dénommée Bottlerocket. Contrairement à Amazon Linux 2 spécialement pensé pour servir d’OS aux VMs hébergées sous EC2, Bottlerocket est lui spécialement pensé pour les « Containers ». Bottlerocket est ce que l’on appelle communément un « Container OS ». Le concept n’est pas nouveau. L’idée de développer un Linux compact et minimaliste spécialisé dans l’hébergement et l’exécution d’une multitude de conteneurs remonte notamment à la naissance de CoreOS et du désormais défunt « Container Linux ». Elle a été reprise par Red Hat (avec son projet Atomic) mais aussi Rancher et son RancherOS.
Google a également développé son « Container-Optimized OS » (aussi surnommé COS) notamment utilisé comme fondation à GKE et d’autres services Google (dont Coud SQL) et souvent considéré comme le système idéal pour exécuter des containers sur Google Cloud Engine sans passer par l’implémentation Kubernetes GKE ou l’infrastructure serverless Cloud Run.
Bottlerocket, le nouveau Linux d’Amazon
Comme CoreOS Container Linux et Google COS, AWS Bottlerocket est une version de Linux la plus minimaliste possible contenant le Kernel (en l’occurrence celui de Linux 5.4) et les utilitaires nécessaires au lancement et la sécurisation des containers. Écrit en langage Rust (hormis le Kernel bien sûr) et présentant une surface d’attaque significativement restreinte, Bottlerocket est optimisé pour exécuter des containers Docker ou conformes au format OCI (Open Container Initiative) aussi bien au sein de machines virtuelles que directement sur des machines physiques (bare metal). Bien qu’il ait été pensé pour AWS et servir de fondation à Amazon EKS et Amazon ECS (et peut-être à l’avenir à AWS Fargate qui s’appuie actuellement sur une technologie de microVM dénommée Firecracker), Bottlerocket est, contrairement à Google COS, un système ouvert, publié sur GitHub et déjà accompagné par un écosystème de partenaires comme Alcide, Aqua, Armory, CrowdStrike, Datadog, Epsagon, GitLab, Kasten, Logic Monitor, New Relic, Puppet, Splunk, Sysdig, Tigera, Trend Micro, Waveworks ou encore NeuVector et ses containers firewall.
L’une des particularités d’AWS Bottlerocket est de ne pas s’appuyer sur des packages de mise à jour mais sur un principe d’images à l’instar de NanoBSD. « Au lieu d’un système de mise à jour par patchs qui corrige des bouts individuels du système, Bottlerocket utilise un modèle simple par image système qui télécharge une image complète et la reboot. Cette approche permet un retour en arrière rapide et complet si nécessaire explique Jeff Barr, évangéliste AWS. Cela élimine les possibilités de conflits et de pannes, et vous permet d’appliquer plus facilement les mises à jour à grande échelle en s’appuyant sur des orchestrateurs comme EKS ».
Au-delà des besoins intrinsèques à AWS, le défi pour Amazon sera d’arriver à faire de Bottlerocket un standard de fait. Le challenge est loin d’être évident. Après tout des concurrents comme CoreOS Container Linux, RancherOS ou VMware PhotonOS n’ont jamais fait l’unanimité. Mais l’absence d’un « Container OS » vraiment universel freine aujourd’hui les stratégies multi-cloud des entreprises. Et il n’est pas certain, loin de là, qu’AWS soit très intéressée par une destinée aussi universelle pour son nouvel OS.
A lire également : Windows 10X, l’OS très containerisé de Microsoft