We use (and abuse) Nomad for Fly.io workloads. My favorite thing about it is that it's simple to understand. You can read the whole project and pretty much figure out what's going on .
We've written:
* A custom task driver to launch and manage Firecracker VMs
* A device plugin for managing persistent disks
The second is interesting – we looked hard at CSI, but the complexity cost of CSI is very high. The benefit is pluggable storage providers. We don't need pluggable storage providers, though.
Likewise, we don't need pluggable networking.
Device plugins are a really nice way to extend Nomad.