Testing Yoke: A possible future beyond Helm
Posted on:
About 2 weeks ago, I found out from Xe Iaso about Yoke, a tool for deploying Kubernetes resources via WebAssembly. They had an extensive writeup of using it with Go here: Yoke is really cool, but I was curious if I could implement similar with Rust, as at the end of the day, it is just expecting a WASM file that outputs JSON to stdout.
With such, over the past 2 weekends I've worked on a repo: lannonbr/yoke-testing, and it honestly isn't too bad. the kube and k8s-openapi do the main grunt work of giving all of the preexisting Kubernetes resources as rust structs. The former has a really nice derive macro for Custom Resources that does a huge amount of legwork for defining custom resources where you only need to care about defining the actual fields in the struct and not much else.
So the MVP of writing these primitives in Rust has satisfied my itch. I'm planning eventually on extending this to define high level custom resources similar to how in Xe's post they create a high level App
with defaults for their homelab setup.
As well, this is definitely not the first in the game of a world beyond Helm for packaging Kubernetes resources (see: cdk8s or more generally Pulimi and Terraform), but I do appreciate people looking at seeing how we can improve the package experience beyond a bunch of yaml files.