Sobre el proyecto

Firecracker es una tecnología de virtualización de código abierto diseñada específicamente para crear y gestionar servicios seguros y multiinquilino basados en contenedores y funciones con modelos operativos serverless. Ejecuta cargas de trabajo en máquinas virtuales ligeras llamadas microVMs, que buscan combinar la seguridad y el aislamiento de la virtualización por hardware con la velocidad y flexibilidad de los contenedores. El componente principal es un monitor de máquina virtual (VMM) construido sobre Linux Kernel Virtual Machine (KVM). Su diseño es deliberadamente minimalista: excluye dispositivos innecesarios y funcionalidad orientada al invitado para reducir la huella de memoria y la superficie de ataque, lo que, según el proyecto, mejora la seguridad, acorta el tiempo de arranque y aumenta la utilización del hardware. Firecracker fue desarrollado en Amazon Web Services para soportar servicios como AWS Lambda y AWS Fargate, y se publica bajo Apache 2.0. También se ha integrado en runtimes de contenedores, incluidos Kata Containers y Flintlock. Una vez iniciado, Firecracker expone un endpoint de API al host, especificado en formato OpenAPI. A través de esta API, los usuarios pueden configurar el número de vCPU de una microVM (por defecto 1) y el tamaño de memoria (por defecto 128 MiB), aplicar plantillas de CPU, adjuntar interfaces de red, añadir dispositivos de bloque respaldados por archivos de solo lectura o lectura-escritura, activar nuevos escaneos de dispositivos de bloque mientras el invitado se ejecuta, intercambiar el archivo de respaldo de un dispositivo de bloque antes o después del arranque, configurar limitadores de velocidad para dispositivos virtio, configurar registros y métricas, añadir dispositivos vsock, entropy y pmem, gestionar la conexión en caliente de memoria y (en vista previa para desarrolladores) conectar o desconectar en caliente dispositivos virtio PCI. Una microVM se inicia con una imagen de kernel, un sistema de archivos raíz y argumentos de arranque; la detención solo se admite en x86_64. Las capacidades integradas incluyen paginación por demanda con fallos, sobresuscripción de CPU por defecto, filtros seccomp específicos de hilo y un proceso Jailer que aplica aislamiento de cgroup/namespace y elimina privilegios para implementaciones de producción. Para comenzar, es posible descargar binarios de lanzamiento o compilar desde el código fuente. La compilación requiere un sistema Unix/Linux con Docker y bash; el proyecto proporciona un contenedor de desarrollo y un comando de compilación devtool, con el binario colocado en build/cargo_target. La documentación cubre una guía de inicio rápido, configuración del host de producción, diseño, solicitudes de API, plantillas de CPU, vsock, entropy, pmem, conexión en caliente de memoria, conexión en caliente de dispositivos y uso de jailer. Los lanzamientos se publican en GitHub aproximadamente cada dos o tres meses con un registro de cambios y una política de lanzamiento documentada. El proyecto publica una matriz de plataformas probadas que cubre instancias metálicas de AWS EC2 en las familias Intel, AMD y Graviton con varios kernels de host, rootfs invitados y kernels invitados. Una limitación conocida es que el dispositivo RTC pl031 en aarch64 no admite interrupciones, por lo que los programas invitados que dependen de alarmas RTC (como hwclock) no funcionarán. Las características de rendimiento están documentadas en un archivo de especificación y se aplican mediante pruebas de integración continua. Las divulgaciones de seguridad se manejan de forma privada según la política de seguridad del proyecto, y el contacto con la comunidad está disponible a través de Slack, problemas de GitHub y correo electrónico.