Working with Unikernel Volumes in Nanos
nanovms.com
nanovms.com
Can I run Ruby in a unikernel yet?
* Yes you can run ruby. Looks like we have packages for 2.3, 2.5 and 2.7 currently - it'd be trivial to add more runtimes.
While I have you -
Any thoughts on support for ESXi? I have a bunch of VMware and would love to run these on top. I gather that it will run, but without hardware acceleration? What does that actually mean?
Edit: Ah, https://nanovms.gitbook.io/ops/vsphere answers some of this.
We have current ESXi VSphere support today - both for 6.7 and 7.0. There are some docs here: https://nanovms.gitbook.io/ops/vsphere .
When you deploy a unikernel it's packaged as a virtual machine so it's not like you are deploying a linux vm and then running this on top - you are deploying your application as it's own isolated vm and it is hardware accelerated. Without hardware acceleration the "cloud" wouldn't exist, however instead of running 2 layers of linux (hypervisor and guest) we recognize that we're virtualized and that we don't need an extra full blown linux running as guest.
What about passing run-time configuration? Is that all supposed to just be built-in, or is a well-designed program expected to reach out and get it somehow (e.g. from Consul)? Am I supposed to bake in keys to give it access to things?
OPS allows you to pass quite a lot of configuration related switches/options/etc: https://nanovms.gitbook.io/ops/configuration and config files that you need on disk can be copied in at build time too. Env vars and such can be injected as well.
If you want to keep using a secret store like Vault that's totally fine and up to you and your application needs. As mentioned in the article some companies use volumes to rotate certs every few hours/day via volumes so the sensitive stuff is separated from deploys.
I think the big jump in unikernels will come when someone can build Linux as a safe Unikernel and create a tool that converts docker images into Unikernel images. It's doable, but incredibly hard.
Disclaimer:
I'm sure there are lots of instances for folks where programming for Unikernels makes sense, but obviously legacy software will be around for a while.
- Lupine Linux uses specialization: https://www.youtube.com/watch?v=AoskLn1Xovc
- HermitCore reimplements a small subset of Linux that covers the majority of apps, so that they can run with it as a unikernel: https://www.youtube.com/watch?v=wHLqSb4Op4s
bold statement, by whatever definition of devops you use