
firecracker v1.17.0
Безопасные и быстрые микроВМ для бессерверных вычислений.
Наша миссия — обеспечить безопасное, мультитенантное выполнение контейнерных и функциональных рабочих нагрузок с минимальными накладными расходами.
Подробнее о Хартии Firecracker читайте здесь.
Что такое Firecracker?
Firecracker — это технология виртуализации с открытым исходным кодом, специально созданная для создания и управления безопасными, мультитенантными контейнерными и функциональными сервисами, которые обеспечивают серверless-модели эксплуатации. Firecracker запускает рабочие нагрузки в легковесных виртуальных машинах, называемых microVM, которые сочетают свойства безопасности и изоляции, обеспечиваемые технологией аппаратной виртуализации, со скоростью и гибкостью контейнеров.
Обзор
Основным компонентом Firecracker является монитор виртуальных машин (VMM), который использует Linux Kernel Virtual Machine (KVM) для создания и запуска microVM. Firecracker имеет минималистичный дизайн. Он исключает ненужные устройства и гостевую функциональность, чтобы уменьшить объем памяти и площадь атаки каждой microVM. Это повышает безопасность, сокращает время запуска и увеличивает загрузку оборудования. Firecracker также интегрирован в контейнерные рантаймы, например Kata Containers и Flintlock.
Firecracker был разработан в Amazon Web Services для ускорения скорости и эффективности таких сервисов, как AWS Lambda и AWS Fargate. Firecracker распространяется с открытым исходным кодом под лицензией Apache версии 2.0.
Чтобы узнать больше о Firecracker, посетите firecracker-microvm.io.
Начало работы
Чтобы начать работу с Firecracker, загрузите последние релизные бинарные файлы или соберите его из исходного кода.
Вы можете собрать Firecracker в любой Unix/Linux-системе, где запущен Docker (мы
используем контейнер для разработки) и установлен bash, следующим образом:
git clone https://github.com/firecracker-microvm/firecracker
cd firecracker
tools/devtool build
toolchain="$(uname -m)-unknown-linux-musl"
Бинарный файл Firecracker будет размещен по адресу
build/cargo_target/${toolchain}/debug/firecracker. Для получения дополнительной
информации о сборке, тестировании и запуске Firecracker перейдите к
краткому руководству.
Общая безопасность microVM Firecracker, включая способность соответствовать критериям безопасных мультитенантных вычислений, зависит от правильно настроенной хост-операционной системы Linux. Конфигурация, которая, по нашему мнению, соответствует этим требованиям, включена в документ по настройке производственного хоста.
Участие в разработке
Firecracker уже запускает производственные рабочие нагрузки в AWS, но это всё ещё первый день на пути, определяемом нашей миссией. Нам предстоит ещё многое построить, и мы приветствуем любой вклад.
Чтобы внести вклад в Firecracker, ознакомьтесь с разделом о настройке среды разработки в кратком руководстве, а затем с рекомендациями по участию в разработке Firecracker.
Релизы
Новые версии Firecracker выпускаются через страницу релизов репозитория GitHub, как правило, каждые два или три месяца. История изменений записана в нашем журнале изменений.
Политика выпуска версий Firecracker подробно описана здесь.
Дизайн
Общая архитектура Firecracker описана в документе о дизайне.
Возможности и характеристики
Firecracker состоит из одного процесса менеджера микро-виртуальных машин, который после запуска предоставляет конечную точку API хосту. API описан в формате OpenAPI. Подробнее об этом читайте в документации по API.
Конечная точка API может использоваться для:
- Настройки microVM путем:
- Установки количества vCPU (по умолчанию — 1).
- Установки размера памяти (по умолчанию — 128 МиБ).
- Настройки шаблона CPU.
- Добавления одного или нескольких сетевых интерфейсов к microVM.
- Добавления одного или нескольких дисков с чтением-записью или только для чтения к microVM, каждый из которых представлен блочным устройством на основе файла.
- Запуска повторного сканирования блочного устройства во время работы гостевой системы. Это позволяет гостевой ОС подхватывать изменения размера файла, лежащего в основе блочного устройства.
- Изменения файла, лежащего в основе блочного устройства, до или после загрузки гостевой системы.
- Настройки ограничителей скорости для virtio-устройств, которые могут ограничивать пропускную способность, количество операций в секунду или оба параметра.
- Настройки системы журналирования и метрик.
[BETA]Настройки дерева данных гостевого сервиса метаданных. Сервис доступен гостевой системе только в том случае, если этот ресурс настроен.- Добавления vsock-сокета к microVM.
- Добавления устройства энтропии к microVM.
- Добавления pmem-устройства к microVM.
- Настройки и управления горячим подключением памяти.
[Developer Preview]Горячее подключение и отключение virtio PCI-устройств во время работы ВМ.- Запуска microVM с использованием заданного образа ядра, корневой файловой системы и аргументов загрузки.
- [Только x86_64] Остановки microVM.
Встроенные возможности:
- Страничный обмен по требованию и оверсабскрипция CPU, включенные по умолчанию.
- Расширенные, специфичные для потоков фильтры seccomp для повышенной безопасности.
- Процесс Jailer для запуска Firecracker в производственных сценариях; применяет барьер изоляции cgroup/namespace, а затем сбрасывает привилегии.
Протестированные платформы
Мы тестируем все комбинации:
| Инстанс | Хостовая ОС и ядро | Гостевая корневая ФС | Гостевое ядро |
|---|---|---|---|
| m5n.metal (Intel Cascade Lake) | al2 linux_5.10 | ubuntu 24.04 | linux_5.10 |
| m6i.metal (Intel Ice Lake) | al2023 linux_6.1 | linux_6.1 | |
| al2023 linux_6.18 | |||
| m7i.metal-24xl (Intel Sapphire Rapids) | |||
| m7i.metal-48xl (Intel Sapphire Rapids) | |||
| m8i.metal-48xl (Intel Granite Rapids)* | |||
| m8i.metal-96xl (Intel Granite Rapids)* | |||
| m6a.metal (AMD Milan) | |||
| m7a.metal-48xl (AMD Genoa) | |||
| m6g.metal (Graviton 2) | |||
| m7g.metal (Graviton 3) | |||
| m8g.metal-24xl (Graviton 4) | |||
| m8g.metal-48xl (Graviton 4) | |||
| m9g.metal-48xl (Graviton 5) |
*: Мы поддерживаем только инстансы AWS EC2 8-го поколения Intel (*8i) с хост-ядром 6.1 или 6.18. Это связано с плохой поддержкой ядром процессоров Granite Rapids на версии 5.10.
Известные проблемы и ограничения
- Устройство RTC
pl031на aarch64 не поддерживает прерывания, поэтому гостевые программы, использующие будильник RTC (например,hwclock), не будут работать.
Производительность
Характеристики производительности Firecracker перечислены в рамках документации по спецификациям. Все спецификации являются частью нашего обязательства по поддержке контейнерных и функциональных рабочих нагрузок в серверless-моделях эксплуатации и поэтому обеспечиваются через непрерывное интеграционное тестирование.
Политика раскрытия информации о безопасности
Безопасность Firecracker — наш главный приоритет. Если вы подозреваете, что обнаружили уязвимость, свяжитесь с нами конфиденциально, как описано в нашем документе о политике безопасности; мы немедленно рассмотрим ваше сообщение.
FAQ и контакты
Часто задаваемые вопросы собраны в нашем документе FAQ.
Вы можете связаться с сообществом Firecracker следующими способами:
- Вопросы, связанные с безопасностью, см. в нашем документе о политике безопасности.
- Пообщайтесь с нами в нашем Slack-пространстве Примечание: большинство мейнтейнеров находятся в европейском часовом поясе.
- Откройте issue на GitHub в этом репозитории.
- Напишите мейнтейнерам по электронной почте на [email protected].
При общении в сообществе Firecracker, пожалуйста, соблюдайте наш кодекс поведения.