MicroVM sicure e veloci per il computing serverless.
La nostra missione è abilitare l'esecuzione sicura, multi-tenant e con overhead minimo di carichi di lavoro container e funzione.
Leggi di più sulla Carta di Firecracker qui.
Firecracker è una tecnologia di virtualizzazione open source progettata appositamente per creare e gestire servizi sicuri, multi-tenant, basati su container e funzioni che forniscono modelli operativi serverless. Firecracker esegue carichi di lavoro in macchine virtuali leggere, chiamate microVM, che combinano le proprietà di sicurezza e isolamento fornite dalla tecnologia di virtualizzazione hardware con la velocità e la flessibilità dei container.
Il componente principale di Firecracker è un monitor di macchine virtuali (VMM) che utilizza il Kernel Virtual Machine (KVM) di Linux per creare ed eseguire microVM. Firecracker ha un design minimalista. Esclude dispositivi non necessari e funzionalità rivolte all'ospite per ridurre l'impronta di memoria e la superficie di attacco di ogni microVM. Questo migliora la sicurezza, diminuisce il tempo di avvio e aumenta l'utilizzo dell'hardware. Firecracker è stato inoltre integrato in runtime di container, ad esempio Kata Containers e Flintlock.
Firecracker è stato sviluppato presso Amazon Web Services per accelerare la velocità e l'efficienza di servizi come AWS Lambda e AWS Fargate. Firecracker è rilasciato come open source sotto .
Per saperne di più su Firecracker, consulta firecracker-microvm.io.
Per iniziare con Firecracker, scarica gli eseguibili dell'ultima release oppure compilalo dal sorgente.
Puoi compilare Firecracker su qualsiasi sistema Unix/Linux che abbia Docker in esecuzione (noi
usiamo un container di sviluppo) e bash installato, come segue:
git clone https://github.com/firecracker-microvm/firecracker
cd firecracker
tools/devtool build
toolchain="$(uname -m)-unknown-linux-musl"
L'eseguibile di Firecracker sarà posizionato in
build/cargo_target/${toolchain}/debug/firecracker. Per maggiori informazioni su
compilazione, test ed esecuzione di Firecracker, consulta la
guida rapida.
La sicurezza complessiva delle microVM Firecracker, inclusa la capacità di soddisfare i criteri per il calcolo multi-tenant sicuro, dipende da un sistema operativo host Linux ben configurato. Una configurazione che riteniamo soddisfi questo requisito è inclusa nel documento di configurazione dell'host di produzione.
Firecracker sta già eseguendo carichi di lavoro di produzione all'interno di AWS, ma è ancora al primo giorno del percorso guidato dalla nostra missione. C'è molto altro da costruire e accogliamo con favore tutti i contributi.
Per contribuire a Firecracker, consulta la sezione sulla configurazione dello sviluppo nella guida per iniziare e poi le linee guida per i contributi di Firecracker.
Le nuove versioni di Firecracker vengono rilasciate tramite la pagina delle release del repository GitHub, in genere ogni due o tre mesi. Una cronologia delle modifiche è registrata nel nostro changelog.
La politica di rilascio di Firecracker è descritta in dettaglio qui.
L'architettura complessiva di Firecracker è descritta in il documento di design.
Firecracker consiste in un singolo processo di Virtual Machine Manager che espone un endpoint API all'host una volta avviato. L'API è specificata in formato OpenAPI. Leggi di più nella documentazione API.
L'endpoint API può essere utilizzato per:
[BETA] Configurare l'albero dati del servizio di metadati rivolto all'ospite. Il
servizio è disponibile per l'ospite solo se questa risorsa è configurata.[Anteprima per sviluppatori] Hot-plug e hot-unplug di dispositivi
virtio PCI mentre la VM è in esecuzione.Capacità Integrate:
Testiamo tutte le combinazioni di:
| Istanza | Host OS & Kernel | Rootfs ospite | Kernel ospite |
|---|---|---|---|
| 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) |
*: Supportiamo solo le istanze AWS EC2 Intel di 8ª generazione (*8i) utilizzando un kernel host 6.1 o 6.18. Ciò è dovuto allo scarso supporto del kernel per le CPU Granite Rapids su 5.10.
pl031 su aarch64 non supporta gli interrupt, quindi i
programmi ospite che utilizzano un allarme RTC (ad es. hwclock) non funzioneranno.Le caratteristiche prestazionali di Firecracker sono elencate come parte della documentazione delle specifiche. Tutte le specifiche fanno parte del nostro impegno a supportare carichi di lavoro container e funzione in modelli operativi serverless e sono pertanto applicate tramite test di integrazione continua.
La sicurezza di Firecracker è la nostra massima priorità. Se sospetti di aver scoperto una vulnerabilità, contattaci privatamente, come indicato nel nostro documento sulla politica di sicurezza; daremo immediatamente priorità alla tua divulgazione.
Le domande frequenti sono raccolte nel nostro documento FAQ.
Puoi contattare la community di Firecracker nei seguenti modi:
Quando comunichi all'interno della community di Firecracker, ti preghiamo di rispettare il nostro code of conduct.