
firecracker v1.17.0
MicroVMs seguros y rápidos para la computación sin servidor.
Nuestra misión es permitir la ejecución segura, multiinquilino y con mínima sobrecarga de cargas de trabajo de contenedores y funciones.
Lee más sobre la Carta de Firecracker aquí.
¿Qué es Firecracker?
Firecracker es una tecnología de virtualización de código abierto diseñada específicamente para crear y gestionar servicios seguros, multiinquilino y basados en contenedores y funciones que proporcionan modelos operativos serverless. Firecracker ejecuta cargas de trabajo en máquinas virtuales ligeras, llamadas microVMs, que combinan las propiedades de seguridad y aislamiento proporcionadas por la tecnología de virtualización de hardware con la velocidad y flexibilidad de los contenedores.
Descripción general
El componente principal de Firecracker es un monitor de máquina virtual (VMM) que utiliza el Kernel Virtual Machine (KVM) de Linux para crear y ejecutar microVMs. Firecracker tiene un diseño minimalista. Excluye dispositivos innecesarios y funcionalidad orientada al huésped para reducir la huella de memoria y la superficie de ataque de cada microVM. Esto mejora la seguridad, disminuye el tiempo de arranque y aumenta la utilización del hardware. Firecracker también se ha integrado en runtimes de contenedores, por ejemplo Kata Containers y Flintlock.
Firecracker fue desarrollado en Amazon Web Services para acelerar la velocidad y eficiencia de servicios como AWS Lambda y AWS Fargate. Firecracker es de código abierto bajo Apache versión 2.0.
Para leer más sobre Firecracker, consulta firecracker-microvm.io.
Primeros pasos
Para comenzar con Firecracker, descarga los binarios de la última versión o compílalo desde el código fuente.
Puedes compilar Firecracker en cualquier sistema Unix/Linux que tenga Docker en ejecución (usamos un contenedor de desarrollo) y bash instalado, de la siguiente manera:
git clone https://github.com/firecracker-microvm/firecracker
cd firecracker
tools/devtool build
toolchain="$(uname -m)-unknown-linux-musl"
El binario de Firecracker se ubicará en build/cargo_target/${toolchain}/debug/firecracker. Para más información sobre cómo compilar, probar y ejecutar Firecracker, consulta la guía de inicio rápido.
La seguridad general de las microVMs de Firecracker, incluida la capacidad de cumplir los criterios para la computación multiinquilino segura, depende de un sistema operativo host Linux bien configurado. Una configuración que creemos que cumple este estándar se incluye en el documento de configuración del host de producción.
Contribuciones
Firecracker ya ejecuta cargas de trabajo de producción dentro de AWS, pero aún es el Día 1 en el camino guiado por nuestra misión. Hay mucho más por construir y damos la bienvenida a todas las contribuciones.
Para contribuir a Firecracker, consulta la sección de configuración de desarrollo en la guía de inicio y luego las directrices de contribución de Firecracker.
Versiones
Las nuevas versiones de Firecracker se publican a través de la página de versiones del repositorio de GitHub, normalmente cada dos o tres meses. Un historial de cambios se registra en nuestro registro de cambios.
La política de versiones de Firecracker se detalla aquí.
Diseño
La arquitectura general de Firecracker se describe en el documento de diseño.
Características y capacidades
Firecracker consiste en un único proceso de gestor de micro máquinas virtuales que expone un endpoint de API al host una vez iniciado. La API está especificada en formato OpenAPI. Lee más al respecto en la documentación de la API.
El endpoint de API se puede utilizar para:
- Configurar la microVM mediante:
- Establecer el número de vCPUs (el valor predeterminado es 1).
- Establecer el tamaño de memoria (el valor predeterminado es 128 MiB).
- Configurar una plantilla de CPU.
- Añadir una o más interfaces de red a la microVM.
- Añadir uno o más discos de lectura-escritura o solo lectura a la microVM, cada uno representado por un dispositivo de bloque respaldado por archivo.
- Activar un nuevo escaneo del dispositivo de bloque mientras el huésped está en ejecución. Esto permite que el sistema operativo huésped detecte cambios de tamaño en el archivo de respaldo del dispositivo de bloque.
- Cambiar el archivo de respaldo de un dispositivo de bloque, antes o después del arranque del huésped.
- Configurar limitadores de velocidad para dispositivos virtio que pueden limitar el ancho de banda, las operaciones por segundo, o ambos.
- Configurar el sistema de registro y métricas.
[BETA]Configurar el árbol de datos del servicio de metadatos orientado al huésped. El servicio solo está disponible para el huésped si este recurso está configurado.- Añadir un socket vsock a la microVM.
- Añadir un dispositivo de entropía a la microVM.
- Añadir un dispositivo pmem a la microVM.
- Configurar y gestionar hotplugging de memoria.
[Vista previa para desarrolladores]Hot-plug y hot-unplug de dispositivos virtio PCI mientras la VM está en ejecución.- Iniciar la microVM usando una imagen de kernel dada, un sistema de archivos raíz y argumentos de arranque.
- [Solo x86_64] Detener la microVM.
Capacidades integradas:
- Paginación por demanda de fallos y sobresuscripción de CPU habilitadas por defecto.
- Filtros seccomp avanzados y específicos por hilo para mayor seguridad.
- Proceso Jailer para iniciar Firecracker en escenarios de producción; aplica una barrera de aislamiento de cgroup/namespace y luego elimina privilegios.
Plataformas probadas
Probamos todas las combinaciones de: