Об этом проекте
Firecracker — это технология виртуализации с открытым исходным кодом, созданная специально для создания и управления безопасными мультитенантными сервисами на основе контейнеров и функций с операционными моделями serverless. Она запускает нагрузки в легковесных виртуальных машинах, называемых микроВМ, которые призваны сочетать безопасность и изоляцию аппаратной виртуализации со скоростью и гибкостью контейнеров.
Основной компонент — это монитор виртуальных машин (VMM), построенный на Linux Kernel Virtual Machine (KVM). Его дизайн намеренно минималистичен: он исключает ненужные устройства и функциональность, обращённую к гостевым системам, чтобы уменьшить объём памяти и поверхность атаки. По заявлению проекта, это повышает безопасность, сокращает время запуска и увеличивает утилизацию оборудования. Firecracker был разработан в Amazon Web Services для поддержки таких сервисов, как AWS Lambda и AWS Fargate, и выпущен под лицензией Apache 2.0. Он также интегрирован в контейнерные рантаймы, включая Kata Containers и Flintlock.
После запуска Firecracker предоставляет хосту API-эндпоинт, описанный в формате OpenAPI. Через этот API пользователи могут настраивать количество vCPU микроВМ (по умолчанию 1) и объём памяти (по умолчанию 128 МиБ), применять CPU-шаблоны, подключать сетевые интерфейсы, добавлять блочные устройства с файловой поддержкой в режиме чтения-записи или только чтения, запускать повторное сканирование блочных устройств во время работы гостевой системы, заменять файл поддержки блочного устройства до или после загрузки, настраивать ограничители скорости для virtio-устройств, включать логирование и метрики, добавлять устройства vsock, энтропии и pmem, управлять горячим подключением памяти и (в режиме предварительной разработки) горячо подключать или отключать virtio PCI-устройства. МикроВМ запускается с образом ядра, корневой файловой системой и аргументами загрузки; остановка поддерживается только на x86_64. Встроенные возможности включают страничную обработку по требованию, переподписку CPU по умолчанию, поток-специфичные seccomp-фильтры и процесс Jailer, который применяет изоляцию cgroup/namespace и снижает привилегии для производственных развёртываний.
Начать работу можно, загрузив готовые бинарные файлы релизов или собрав из исходников. Сборка требует Unix/Linux-системы с Docker и bash; проект предоставляет контейнер для разработки и команду devtool build, а бинарный файл размещается в build/cargo_target. Документация охватывает краткое руководство по началу работы, настройку производственного хоста, дизайн, API-запросы, CPU-шаблоны, vsock, энтропию, pmem, горячее подключение памяти, горячее подключение устройств и использование Jailer. Релизы публикуются на GitHub примерно каждые два-три месяца с журналом изменений и документированной политикой релизов.
Проект публикует матрицу протестированных платформ, охватывающую металлические инстансы AWS EC2 семейств Intel, AMD и Graviton с различными хостовыми ядрами, гостевыми rootfs и гостевыми ядрами. Известное ограничение: устройство RTC pl031 на aarch64 не поддерживает прерывания, поэтому гостевые программы, полагающиеся на будильники RTC (например, hwclock), не будут работать. Характеристики производительности задокументированы в файле спецификации и контролируются через непрерывное интеграционное тестирование. Раскрытие уязвимостей обрабатывается конфиденциально в соответствии с политикой безопасности проекта; связь с сообществом доступна через Slack, GitHub issues и электронную почту.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.