Yoke: An exploration into Infrastructure as Code for Kubernetes package management
In our exploration, we delve into the limitations of text-based templating for managing Kubernetes resources. These include the absence of built-in testing, the lack of static typing, inconsistent support within integrated development environments (IDEs), and the existence of implicit contracts between packages and users.
To address these limitations, we highlight the benefits of Kubernetes Packages as Code. Such a solution effectively tackles the aforementioned issues. Moreover, it streamlines package definition, versioning, and distribution, as we transition our mental model from a collection of manifest templates to functions, libraries, and executables.
Nonetheless, challenges endure in packaging code. How can we execute code efficiently? How might we bundle runtimes and compilers? How do we facilitate compatibility across various programming languages and operating system architectures? And, crucially, how do we ensure the safety of executing arbitrary code against our infrastructure and clusters? Enter WebAssembly, offering a potential solution to these intricate dilemmas.
To illustrate these concepts, we introduce Yoke: The IaC Package Manager for Kubernetes.