
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 :