
MicroVMs sécurisées et rapides pour l'informatique serverless.
Notre mission est de permettre l'exécution sécurisée, multi-locataire et à surcharge minimale de charges de travail de conteneurs et de fonctions.
Lisez-en plus sur la charte Firecracker ici.
Firecracker est une technologie de virtualisation open source conçue spécifiquement pour créer et gérer des services sécurisés, multi-locataires, basés sur des conteneurs et des fonctions, qui fournissent des modèles opérationnels serverless. Firecracker exécute des charges de travail dans des machines virtuelles légères, appelées microVM, qui combinent les propriétés de sécurité et d'isolation offertes par la technologie de virtualisation matérielle avec la rapidité et la flexibilité des conteneurs.
Le composant principal de Firecracker est un moniteur de machine virtuelle (VMM) qui utilise la machine virtuelle du noyau Linux (KVM) pour créer et exécuter des microVM. Firecracker a une conception minimaliste. Il exclut les périphériques inutiles et les fonctionnalités orientées vers l'invité afin de réduire l'empreinte mémoire et la surface d'attaque de chaque microVM. Cela améliore la sécurité, réduit le temps de démarrage et augmente l'utilisation du matériel. Firecracker a également été intégré à des environnements d'exécution de conteneurs, par exemple Kata Containers et Flintlock.
Firecracker a été développé chez Amazon Web Services pour accélérer la vitesse et l'efficacité de services comme AWS Lambda et AWS Fargate. Firecracker est publié en open source sous licence Apache version 2.0.
Pour en savoir plus sur Firecracker, consultez firecracker-microvm.io.
Pour commencer avec Firecracker, téléchargez les binaires de la dernière version ou compilez-le à partir des sources.
Vous pouvez compiler Firecracker sur tout système Unix/Linux disposant de Docker
en cours d'exécution (nous utilisons un conteneur de développement) et de
bash installé, comme suit :
git clone https://github.com/firecracker-microvm/firecracker
cd firecracker
tools/devtool build
toolchain="$(uname -m)-unknown-linux-musl"
Le binaire Firecracker sera placé dans
build/cargo_target/${toolchain}/debug/firecracker. Pour plus d'informations
sur la compilation, les tests et l'exécution de Firecracker, consultez le
guide de démarrage rapide.
La sécurité globale des microVM Firecracker, y compris la capacité à satisfaire aux critères d'un calcul multi-locataire sûr, dépend d'un système d'exploitation hôte Linux bien configuré. Une configuration que nous estimons répondre à ces critères est incluse dans le document de configuration de l'hôte de production.
Firecracker fait déjà tourner des charges de travail de production au sein d'AWS, mais nous n'en sommes encore qu'au premier jour du parcours guidé par notre mission. Il reste encore beaucoup à construire et nous accueillons toutes les contributions.
Pour contribuer à Firecracker, consultez la section sur la configuration de développement dans le guide de démarrage, puis les directives de contribution de Firecracker.
De nouvelles versions de Firecracker sont publiées via la page des versions du dépôt GitHub, généralement toutes les deux ou trois mois. L'historique des modifications est consigné dans notre journal des changements.
La politique de publication de Firecracker est détaillée ici.
L'architecture globale de Firecracker est décrite dans le document de conception.
Firecracker se compose d'un processus unique de gestionnaire de micro machine virtuelle qui expose un point de terminaison API à l'hôte une fois démarré. L'API est spécifiée au format OpenAPI. Pour en savoir plus, consultez la documentation de l'API.
Le point de terminaison API peut être utilisé pour :
[BETA] Configurer l'arborescence de données du service de métadonnées
orienté vers l'invité. Le service n'est disponible pour l'invité que si cette
ressource est configurée.[Developer Preview] Brancher et débrancher à chaud
des périphériques PCI virtio pendant que la VM est en cours d'exécution.Capacités intégrées :
Nous testons toutes les combinaisons de :
* : Nous ne prenons en charge que les instances AWS EC2 Intel de 8e génération (*8i) utilisant un noyau hôte 6.1 ou 6.18. Cela est dû à la mauvaise prise en charge des CPU Granite Rapids par le noyau 5.10.
pl031 sur aarch64 ne prend pas en charge les
interruptions, donc les programmes invités qui utilisent une alarme RTC (par
exemple hwclock) ne fonctionneront pas.Les caractéristiques de performance de Firecracker sont répertoriées dans la documentation de spécification. Toutes les spécifications font partie de notre engagement à prendre en charge les charges de travail de conteneurs et de fonctions dans des modèles opérationnels serverless, et sont donc appliquées via des tests d'intégration continue.
La sécurité de Firecracker est notre priorité absolue. Si vous pensez avoir découvert une vulnérabilité, contactez-nous en privé, comme indiqué dans notre document de politique de sécurité ; nous accorderons immédiatement la priorité à votre divulgation.
Les questions fréquemment posées sont rassemblées dans notre document FAQ.
Vous pouvez entrer en contact avec la communauté Firecracker de la manière suivante :
Lorsque vous communiquez au sein de la communauté Firecracker, veuillez respecter notre code de conduite.
| Instance | OS hôte et noyau | Rootfs invité | Noyau invité |
|---|
| m5n.metal (Intel Cascade Lake) | al2 linux_5.10 | ubuntu 24.04 | linux_5.10 |
| m6i.metal (Intel Ice Lake) | al2023 linux_6.1 | linux_6.1 | |
| al2023 linux_6.18 | |||
| m7i.metal-24xl (Intel Sapphire Rapids) | |||
| m7i.metal-48xl (Intel Sapphire Rapids) | |||
| m8i.metal-48xl (Intel Granite Rapids)* | |||
| m8i.metal-96xl (Intel Granite Rapids)* | |||
| m6a.metal (AMD Milan) | |||
| m7a.metal-48xl (AMD Genoa) | |||
| m6g.metal (Graviton 2) | |||
| m7g.metal (Graviton 3) | |||
| m8g.metal-24xl (Graviton 4) | |||
| m8g.metal-48xl (Graviton 4) |