Sobre o projeto
Firecracker é uma tecnologia de virtualização de código aberto criada especificamente para criar e gerenciar serviços seguros e multilocatários baseados em contêineres e funções com modelos operacionais serverless. Ela executa cargas de trabalho em máquinas virtuais leves chamadas microVMs, que visam combinar a segurança e o isolamento da virtualização de hardware com a velocidade e a flexibilidade dos contêineres. O componente central é um monitor de máquina virtual (VMM) construído sobre a Máquina Virtual do Kernel Linux (KVM). Seu design é deliberadamente minimalista: exclui dispositivos desnecessários e funcionalidades voltadas ao convidado para reduzir a pegada de memória e a superfície de ataque, o que, segundo o projeto, melhora a segurança, reduz o tempo de inicialização e aumenta a utilização de hardware. A Firecracker foi desenvolvida na Amazon Web Services para apoiar serviços como AWS Lambda e AWS Fargate, e é lançada sob a licença Apache 2.0. Também foi integrada a runtimes de contêineres, incluindo Kata Containers e Flintlock. Após a inicialização, a Firecracker expõe um endpoint de API para o host, especificado em formato OpenAPI. Por meio dessa API, os usuários podem configurar a contagem de vCPUs de uma microVM (padrão 1) e o tamanho da memória (padrão 128 MiB), aplicar modelos de CPU, anexar interfaces de rede, adicionar dispositivos de bloco com suporte a arquivo somente leitura ou leitura-escrita, acionar reescritas de dispositivos de bloco enquanto o convidado está em execução, trocar o arquivo de apoio de um dispositivo de bloco antes ou depois da inicialização, configurar limitadores de taxa para dispositivos virtio, configurar registro e métricas, adicionar dispositivos vsock, entropia e pmem, gerenciar hotplug de memória e (em pré-visualização de desenvolvedor) conectar ou desconectar dispositivos virtio PCI a quente. Uma microVM é iniciada com uma imagem de kernel, sistema de arquivos raiz e argumentos de inicialização; a parada é suportada apenas em x86_64. Os recursos integrados incluem paginação sob demanda, sobresubscrição de CPU por padrão, filtros seccomp específicos de thread e um processo Jailer que aplica isolamento de cgroup/namespace e remove privilégios para implantações de produção. Para começar, é possível baixar os binários de lançamento ou compilar a partir do código-fonte. A compilação requer um sistema Unix/Linux com Docker e bash; o projeto fornece um contêiner de desenvolvimento e um comando de build devtool, com o binário colocado em build/cargo_target. A documentação cobre um guia de início rápido, configuração do host de produção, design, requisições de API, modelos de CPU, vsock, entropia, pmem, hotplug de memória, hotplug de dispositivos e uso do jailer. Os lançamentos são publicados no GitHub aproximadamente a cada dois ou três meses, com um changelog e uma política de lançamento documentada. O projeto publica uma matriz de plataformas testadas que abrange instâncias bare metal da AWS EC2 nas famílias Intel, AMD e Graviton, com vários kernels de host, rootfs de convidado e kernels de convidado. Uma limitação conhecida é que o dispositivo RTC pl031 em aarch64 não suporta interrupções, portanto, programas convidados que dependem de alarmes RTC (como hwclock) não funcionarão. As características de desempenho são documentadas em um arquivo de especificação e aplicadas por meio de testes de integração contínua. Divulgações de segurança são tratadas de forma privada de acordo com a política de segurança do projeto, e o contato com a comunidade está disponível via Slack, issues do GitHub e e-mail.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.