MicroVMs seguros e rápidos para computação serverless.
Nossa missão é permitir a execução segura, multi-tenant e com sobrecarga mínima de workloads de contêineres e funções.
Leia mais sobre a Carta do Firecracker aqui.
O Firecracker é uma tecnologia de virtualização de código aberto projetada especificamente para criar e gerenciar serviços seguros, multi-tenant e baseados em contêineres e funções que oferecem modelos operacionais serverless. O Firecracker executa workloads em máquinas virtuais leves, chamadas microVMs, que combinam as propriedades de segurança e isolamento fornecidas pela tecnologia de virtualização de hardware com a velocidade e flexibilidade dos contêineres.
O principal componente do Firecracker é um monitor de máquina virtual (VMM) que usa o Linux Kernel Virtual Machine (KVM) para criar e executar microVMs. O Firecracker tem um design minimalista. Ele exclui dispositivos desnecessários e funcionalidades voltadas ao guest para reduzir o footprint de memória e a superfície de ataque de cada microVM. Isso melhora a segurança, diminui o tempo de inicialização e aumenta a utilização de hardware. O Firecracker também foi integrado em runtimes de contêineres, por exemplo Kata Containers e Flintlock.
O Firecracker foi desenvolvido na Amazon Web Services para acelerar a velocidade e a eficiência de serviços como AWS Lambda e AWS Fargate. O Firecracker é de código aberto sob .
Para ler mais sobre o Firecracker, confira firecracker-microvm.io.
Para começar com o Firecracker, baixe os binários da versão mais recente release ou compile-o a partir do código-fonte.
Você pode compilar o Firecracker em qualquer sistema Unix/Linux que tenha Docker
em execução (usamos um contêiner de desenvolvimento) e bash instalado, da
seguinte forma:
git clone https://github.com/firecracker-microvm/firecracker
cd firecracker
tools/devtool build
toolchain="$(uname -m)-unknown-linux-musl"
O binário do Firecracker será colocado em
build/cargo_target/${toolchain}/debug/firecracker. Para mais informações sobre
compilação, testes e execução do Firecracker, acesse o
guia de início rápido.
A segurança geral das microVMs do Firecracker, incluindo a capacidade de atender aos critérios para computação multi-tenant segura, depende de um sistema operacional host Linux bem configurado. Uma configuração que acreditamos atender a esse padrão está incluída no documento de configuração do host de produção.
O Firecracker já está executando workloads de produção dentro da AWS, mas ainda estamos no Dia 1 da jornada guiada pela nossa missão. Há muito mais a construir e recebemos todas as contribuições.
Para contribuir com o Firecracker, confira a seção de configuração de desenvolvimento no guia de início rápido e depois as diretrizes de contribuição do Firecracker.
Novas versões do Firecracker são lançadas através da página de releases do repositório GitHub, normalmente a cada dois ou três meses. Um histórico de mudanças é registrado no nosso changelog.
A política de releases do Firecracker é detalhada aqui.
A arquitetura geral do Firecracker é descrita em o documento de design.
O Firecracker consiste em um único processo de gerenciador de micro Máquina Virtual que expõe um endpoint de API ao host uma vez iniciado. A API é especificada em formato OpenAPI. Leia mais sobre isso na documentação da API.
O endpoint da API pode ser usado para:
[BETA] Configurar a árvore de dados do serviço de metadados voltado ao
guest. O serviço só está disponível para o guest se este recurso estiver
configurado.[Developer Preview] Hot-plug e hot-unplug de
dispositivos virtio PCI enquanto a VM está em execução.Capacidades Integradas:
Testamos todas as combinações de:
| Instância | Host OS & Kernel | Guest Rootfs | Guest Kernel |
|---|---|---|---|
| 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) |
*: Nós somente suportamos instâncias AWS EC2 Intel de 8ª Geração (*8i) usando um kernel host 6.1 ou 6.18. Isso se deve ao suporte deficiente do kernel para CPUs Granite Rapids no 5.10.
pl031 em aarch64 não suporta interrupções, portanto
programas guest que usam alarme RTC (por exemplo, hwclock) não funcionarão.As características de desempenho do Firecracker estão listadas como parte da documentação de especificação. Todas as especificações fazem parte do nosso compromisso em suportar workloads de contêineres e funções em modelos operacionais serverless e, portanto, são aplicadas através de testes de integração contínua.
A segurança do Firecracker é nossa maior prioridade. Se você suspeitar que encontrou uma vulnerabilidade, entre em contato conosco de forma privada, como descrito no nosso documento de política de segurança; priorizaremos imediatamente a sua divulgação.
Perguntas frequentes estão reunidas no nosso documento de FAQ.
Você pode entrar em contato com a comunidade do Firecracker das seguintes formas:
Ao se comunicar dentro da comunidade do Firecracker, lembre-se do nosso código de conduta.