How to Build Serverless WebAssembly Apps With SpinKube
SEATTLE — In a demo for The New Stack Makers recorded at Open Source Summit North America, Kate Goldenring of Fermyon Technologies showed SpinKube as a way to build serverless WebAssembly applications with a declarative, command line interface (CLI).
A Kubernetes operator, SpinKube allows platform engineers to deploy applications as custom resources to their Kubernetes clusters.
SpinKube is also a runtime for executing the applications that the user builds, said Goldenring, a senior software engineer at Fermyon. It lets you build applications locally on your machine. It then takes that same application and runs it on Kubernetes clusters.
Made of four projects, SpinKube includes the spin operator, where the user declaratively states that this is their Spin application. It’s a form of a custom resource that runs in a cluster.
“And then you have the containerd shim, which is actually the shim that runs on top of containerd that lets you execute this WebAssembly application instead of a container on your Kubernetes cluster,” Goldenring said.
“And then you might think, OK, now I have to go install the shim on all of my nodes in my cluster, that sounds like a headache. Well, instead, you can use the runtime class manager, which was made by folks from Liquid Reply, which used to be called Kwasm. And that installs the shim for you. And then, to make it all easier, there’s a plugin called the SpinKube plugin. That makes it all one simple spin cube scaffold experience.”
A Demand for Running Wasm on Kubernetes
Fermyon Cloud runs many WebAssembly (Wasm) applications on Nomad, the workload orchestrator developed by HashiCorp. However, more and more people want to start running Wasm on Kubernetes.
“And actually, the containerd shim was created by folks at Microsoft, who wanted to run Spin applications on AKS clusters,” Goldenring said. “And so already there was a clear desire for that, but the experience was a little hard getting that shim onto your cluster.
“And then how do I update my Spin applications to connect to different data sources — a key-value store, a Redis database, or a Redis key value store, or a SQLite database? And so we brought together these projects out of that demand from users to have an open source project where everyone’s collaborating on this smooth, WebAssembly Kubernetes experience.”
What does this mean for the user trying to run event-based services on Kubernetes?
“People are a little frustrated with the serverless story that exists,” Goldenring said. “And people are trying to write event-driven serverless applications on Kubernetes. And it’s not good, they’re not getting enough reactiveness out of their applications that they want. And SpinKube provides another way to do that.”
Check out the full video to see how SpinKube works.