v0.25.0
firecracker-microvm/firecrackerv0.25.0Aug 13, 2021by luminitavoicu
AI Summary
A major feature release introducing extensive API and configuration enhancements, including seccomp filter customization, GICv2 snapshot support, and resource limiting, while migrating Docker images to Amazon ECR.
Key Highlights
- Added seccomp filter customization options
- Snapshotting support for GICv2 enabled guests
- Migration of Docker images to Amazon ECR
- Added new API endpoints and metrics
- Introduced resource limiting flags
Breaking Changes
- Deprecated the `--seccomp-level` parameter
- Changed Docker images repository from DockerHub to Amazon ECR
New Features
- Devtool build `--ssh-keys` flag
- Block device flush configuration
- `--new-pid-ns` flag for Jailer
- API metrics for `/mmds` endpoint
- `--describe-snapshot` flag
- `--no-seccomp` and `--seccomp-filter` parameters
- `seccompiler-bin` binary
- `devtool install` command
- Vsock event on snapshot creation
- `GET` request on `/vm/config`
- `--resource-limit` flag
Full Release Notes
### Added - Added devtool build `--ssh-keys` flag to support fetching from private git repositories. - Added option to configure block device flush. - Added `--new-pid-ns` flag to the Jailer in order to spawn the Firecracker process in a new PID namespace. - Added API metrics for `GET`, `PUT` and `PATCH` requests on `/mmds` endpoint. - Added `--describe-snapshot` flag to Firecracker to fetch the data format version of a snapshot state file provided as argument. - Added `--no-seccomp` parameter for disabling the default seccomp filters. - Added `--seccomp-filter` parameter for supplying user-provided, custom filters. - Added the `seccompiler-bin` binary that is used to compile JSON seccomp filters into serialized BPF for Firecracker consumption. - Snapshotting support for GICv2 enabled guests. - Added `devtool install` to deploy built binaries in `/usr/local/bin` or a given path. - Added code logic to send `VIRTIO_VSOCK_EVENT_TRANSPORT_RESET` on snapshot creation, when the Vsock device is active. The event will close active connections on the guest. - Added `GET` request on `/vm/config` that provides full microVM configuration as a JSON HTTP response. - Added `--resource-limit` flag to jailer to limit resources such as: number of file descriptors allowed at a time (with a default value of 2048) and maximum size of files created by the process. ### Changed - Changed Docker images repository from DockerHub to Amazon ECR. - Fixed off-by-one error in virtio-block descriptor address validation. - Changed the `PATCH` request on `/balloon/statistics` to schedule the first statistics update immediately after processing the request. - Deprecated the `--seccomp-level parameter`. It will be removed in a future release. Using it logs a runtime warning. - Experimental gnu libc builds use empty default seccomp filters, allowing all system calls. ### Fixed - Fixed non-compliant check for the RTC device ensuring a fixed 4-sized data buffer. - Unnecessary interrupt assertion was removed from the RTC. However, a dummy interrupt is still allocated for snapshot compatibility reasons. - Fixed the SIGPIPE signal handler so Firecracker no longer exits. The signal is still recorded in metrics and logs. - Fixed ballooning API definitions by renaming all fields which mentioned "MB" to use "MiB" instead. - Snapshot related host files (vm-state, memory, block backing files) are now flushed to their backing mediums as part of the CreateSnapshot operation. - Fixed the SSBD mitigation not being enabled on `aarch64` with the provided `prod-host-setup.md`. - Fixed the balloon statistics not working after a snapshot restore event. - The `utc_timestamp_ms` now reports the timestamp in ms from the UTC UNIX Epoch, as the name suggests. It was previously using a monotonic clock with an undefined starting point.