
firecracker v1.17.0
MicroVMs sécurisées et rapides pour l'informatique serverless.
Notre mission est de permettre l'exécution sécurisée, multi-locataire et à faible surcoût de charges de travail conteneurisées et de fonctions.
En savoir plus sur la charte Firecracker ici.
Qu'est-ce que Firecracker ?
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, offrant 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 fournies par la technologie de virtualisation matérielle avec la rapidité et la flexibilité des conteneurs.
Vue d'ensemble
Le composant principal de Firecracker est un moniteur de machine virtuelle (VMM) qui utilise le Kernel Virtual Machine (KVM) de Linux 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 invité afin de réduire l'empreinte mémoire et la surface d'attaque de chaque microVM. Cela améliore la sécurité, diminue le temps de démarrage et augmente l'utilisation du matériel. Firecracker a également été intégré dans 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
Pour démarrer 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
(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 conforme à cette exigence est incluse dans le document de configuration de l'hôte de production.
Contribuer
Firecracker exécute déjà des charges de travail de production au sein d'AWS, mais nous n'en sommes qu'au premier jour du parcours guidé par notre mission. Il reste encore beaucoup à construire et nous accueillons volontiers 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.
Versions
Les nouvelles versions de Firecracker sont publiées via la page releases du dépôt GitHub, généralement toutes les deux ou trois mois. Un historique des modifications est consigné dans notre journal des modifications.
La politique de publication de Firecracker est détaillée ici.
Conception
L'architecture globale de Firecracker est décrite dans le document de conception.
Fonctionnalités et capacités
Firecracker se compose d'un unique processus 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 :
- Configurer la microVM en :
- Définissant le nombre de vCPU (la valeur par défaut est 1).
- Définissant la taille de la mémoire (la valeur par défaut est 128 Mio).
- Configurant un modèle de CPU.
- Ajouter une ou plusieurs interfaces réseau à la microVM.
- Ajouter un ou plusieurs disques en lecture-écriture ou en lecture seule à la microVM, chacun représenté par un périphérique de bloc adossé à un fichier.
- Déclencher une nouvelle analyse d'un périphérique de bloc pendant que l'invité est en cours d'exécution. Cela permet au système d'exploitation invité de prendre en compte les changements de taille du fichier sous-jacent du périphérique de bloc.
- Modifier le fichier sous-jacent d'un périphérique de bloc, avant ou après le démarrage de l'invité.
- Configurer des limiteurs de débit pour les périphériques virtio, qui peuvent limiter la bande passante, les opérations par seconde, ou les deux.
- Configurer le système de journalisation et de métriques.
[BETA]Configurer l'arborescence de données du service de métadonnées orienté invité. Le service n'est disponible pour l'invité que si cette ressource est configurée.- Ajouter une socket vsock à la microVM.
- Ajouter un périphérique d'entropie à la microVM.
- Ajouter un périphérique pmem à la microVM.
- Configurer et gérer le branchement à chaud de la mémoire.
[Aperçu développeur]Brancher et débrancher à chaud des périphériques PCI virtio pendant que la VM est en cours d'exécution.- Démarrer la microVM à l'aide d'une image de noyau, d'un système de fichiers racine et d'arguments de démarrage donnés.
- [x86_64 uniquement] Arrêter la microVM.
Capacités intégrées :
- Pagination par défauts à la demande et sursouscription du CPU activées par défaut.
- Filtres seccomp avancés, spécifiques aux threads, pour une sécurité renforcée.
- Processus Jailer pour démarrer Firecracker dans des scénarios de production ; applique une barrière d'isolation cgroup/namespace puis abandonne les privilèges.
Plateformes testées
Nous testons toutes les combinaisons de :
| 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) | |||
| m9g.metal-48xl (Graviton 5) |
* : Nous prenons en charge uniquement les instances AWS EC2 Intel de 8e génération (*8i) avec un noyau hôte 6.1 ou 6.18. Cela est dû à une prise en charge insuffisante du noyau pour les CPU Granite Rapids sur 5.10.
Problèmes connus et limitations
- Le périphérique RTC
pl031sur aarch64 ne prend pas en charge les interruptions, de sorte que les programmes invités qui utilisent une alarme RTC (par exemplehwclock) ne fonctionneront pas.
Performances
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.
Politique de divulgation des failles de sécurité
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 traiterons votre divulgation en priorité immédiate.
FAQ et contact
Les questions fréquemment posées sont rassemblées dans notre document FAQ.
Vous pouvez contacter la communauté Firecracker de la manière suivante :
- Pour les problèmes liés à la sécurité, consultez notre document de politique de sécurité.
- Discutez avec nous sur notre espace de travail Slack Remarque : la plupart des mainteneurs se trouvent sur un fuseau horaire européen.
- Ouvrez un problème GitHub dans ce dépôt.
- Envoyez un e-mail aux mainteneurs à [email protected].
Lorsque vous communiquez au sein de la communauté Firecracker, veuillez respecter notre code de conduite.