
firecracker v1.17.0
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 que é o Firecracker?
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.
Visão Geral
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 Apache versão 2.0.
Para ler mais sobre o Firecracker, confira firecracker-microvm.io.
Começando
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.
Contribuindo
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.
Releases
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.
Design
A arquitetura geral do Firecracker é descrita em o documento de design.
Recursos e Capacidades
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:
- Configurar a microvm:
- Definindo o número de vCPUs (o padrão é 1).
- Definindo o tamanho da memória (o padrão é 128 MiB).
- Configurando um template de CPU.
- Adicionar uma ou mais interfaces de rede à microVM.
- Adicionar um ou mais discos de leitura-escrita ou somente leitura à microVM, cada um representado por um dispositivo de bloco com suporte de arquivo.
- Acionar uma nova varredura do dispositivo de bloco enquanto o guest está em execução. Isso permite que o sistema operacional guest detecte mudanças de tamanho no arquivo de suporte do dispositivo de bloco.
- Alterar o arquivo de suporte de um dispositivo de bloco, antes ou depois da inicialização do guest.
- Configurar limitadores de taxa para dispositivos virtio que podem limitar a largura de banda, operações por segundo, ou ambos.
- Configurar o sistema de logging e métricas.
[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.- Adicionar um socket vsock à microVM.
- Adicionar um dispositivo de entropia à microVM.
- Adicionar um dispositivo pmem à microVM.
- Configurar e gerenciar hotplugging de memória.
[Developer Preview]Hot-plug e hot-unplug de dispositivos virtio PCI enquanto a VM está em execução.- Iniciar a microVM usando uma imagem de kernel, sistema de arquivos raiz e argumentos de boot fornecidos.
- [Somente x86_64] Parar a microVM.
Capacidades Integradas:
- Paginação por demanda de falhas e oversubscription de CPU habilitados por padrão.
- Filtros seccomp avançados e específicos por thread para segurança aprimorada.
- Processo Jailer para iniciar o Firecracker em cenários de produção; aplica uma barreira de isolamento cgroup/namespace e depois remove privilégios.
Plataformas testadas
Testamos todas as combinações de: