Hey all! I’m looking for some input on an idea I’ve been kicking around for a while and just started hacking on the past few days. I call it “Mistletoe”, and it’s yet another Kubernetes package manager, like Helm. I’m writing it due to some frustrations I’ve had with Helm in the past not supporting more complex cases.
I’m still in the early stages, so only the most trivial parts work, which is why I wanted feedback before I really put the gas on. The cliff’s notes are that it’s a Kubernetes package manager where the packages are WebAssembly modules that take input YAML strings and output Kubernetes resource YAML strings. It turns out that writing packages for it is pretty braindead simple, so I have high hopes, but please feel free to give me a reality check if I’m spouting nonsense.
I don’t like the idea of replacing one well known YAML schema (k8s as much as I hate it is well known), with another YAML schema that is not well known. I think I’d rather use something to get away from YAML altogether, rather than just trade one for another. The reason helm and kustomize work well is that your existing k8s resource knowledge transfers, it sounds like it wouldn’t with this thing.
Oh, it’s all still Kubernetes YAML. The difference is in how it’s represented. Helm Charts are packaged Golang templates of Kubernetes YAML, and as such have a whole lot of limitation since the only logic you can put into them is Golang template logic.
This is still Kubernetes YAML, but instead you write any program you want to return the YAML, as long as it fits in the sandbox, so it’s pretty open-ended. For example, as a stretch goal, I might add an engine to it that could recompile Helm Charts into Mistletoe Modules.