Managing Kubernetes resources with YAML templates can quickly turn into an unreadable mess. I got tired of fighting it, so I built Yoke.
Yoke is a client-side CLI (like Helm) but instead of YAML charts, it allows you to describe your charts (“flights” in Yoke terminology) as code.
Your Kubernetes “packages” are actual programs, not templated text, which means you can use actual programming languages to define your packages; Allowing you to fully leverage your development environment.
At its core a flight is a program that reads inputs from stdin and writes resources to stdout. It is packaged as a WebAssembly Module for portability and security. This allows you to leverage any programming language that supports WebAssembly like Go or Rust to build your "chart" logic.
With yoke your packages get: control flow, static typing and intilisense, type checking, test frameworks, package ecosystem (go modules, rust cargo, npm, and so on), and so on!
What's more Yoke doesn't stop at client-side package management. You can integrate your packages directly into the Kubernetes API with Yoke's Air-Traffic-Controller, enabling you to manage your packages as first-class Kubernetes resources.
This is still an early project, and I’d love feedback. Here is the Github Repository and the documentation.
Very cool. We're using helm currently for our startup. It works, but I'm not super excited about it. We've also played with deploying k8s resources with ansible. It works better than expected, but is a bit clunky.
We've also written operators and controllers for some things, but that's a lot of work and not always worth it.
Your project looks like a very interesting alternative, will check it out!
Also, it has a kro-like operator for deploying packages defined as code. If the operators you are writing are just managing resources and not doing anything special with the outside world, then you can use the AirTrafficController to build your CRDs and all you need to provide is the program to transform a CR into the underlying resources. Just in case that part interests you.
Managing Kubernetes resources with YAML templates can quickly turn into an unreadable mess. I got tired of fighting it, so I built Yoke.
Yoke is a client-side CLI (like Helm) but instead of YAML charts, it allows you to describe your charts (“flights” in Yoke terminology) as code.
Your Kubernetes “packages” are actual programs, not templated text, which means you can use actual programming languages to define your packages; Allowing you to fully leverage your development environment.
At its core a flight is a program that reads inputs from stdin and writes resources to stdout. It is packaged as a WebAssembly Module for portability and security. This allows you to leverage any programming language that supports WebAssembly like Go or Rust to build your "chart" logic.
With yoke your packages get: control flow, static typing and intilisense, type checking, test frameworks, package ecosystem (go modules, rust cargo, npm, and so on), and so on!
What's more Yoke doesn't stop at client-side package management. You can integrate your packages directly into the Kubernetes API with Yoke's Air-Traffic-Controller, enabling you to manage your packages as first-class Kubernetes resources.
This is still an early project, and I’d love feedback. Here is the Github Repository and the documentation.
Repo: https://github.com/yokecd/yoke Docs: https://yokecd.github.io/docs
Would love to hear thoughts—good, bad, or otherwise.
Very cool. We're using helm currently for our startup. It works, but I'm not super excited about it. We've also played with deploying k8s resources with ansible. It works better than expected, but is a bit clunky.
We've also written operators and controllers for some things, but that's a lot of work and not always worth it.
Your project looks like a very interesting alternative, will check it out!
Thanks! Very appreciated.
Also, it has a kro-like operator for deploying packages defined as code. If the operators you are writing are just managing resources and not doing anything special with the outside world, then you can use the AirTrafficController to build your CRDs and all you need to provide is the program to transform a CR into the underlying resources. Just in case that part interests you.
Thank you for the feedback. Its very appreciated.