Currently, the go-to package manager for Kubernetes is Helm. Helm has many shortcomings and people have been looking for alternatives for a long time. There are actually several alternatives that have emerged, but none has gained significant traction to replace Helm. So, you might ask what makes Anemos different?
Anemos uses JavaScript/TypeScript to define and manage your Kubernetes manifests. It is a single-binary tool that is written in Go and uses the Goja runtime (its Sobek fork to be pedantic) to execute JavaScript/TypeScript code. It supports templating via JavaScript template literals. It also allows you to use an object-oriented approach for type safety and better IDE experience. As a third option, it provides APIs for direct YAML node manipulation. You can mix and match these approaches in any way you like.
Anemos allows you to define manifests for all your applications in a single project. You can also easily manage different environments like development, staging, and production in the same project. This brings centralized configuration management and makes it easier to maintain consistency across applications and environments.
Another key feature of Anemos is its ability to modify generated manifests whether it's generated by your own code or by third-party packages. No need to wait for maintainers to add a feature or fix a bug. It also allows you to modify and inspect your manifests in bulk, such as adding some labels to all your manifests or replacing your ingresses with OpenShift routes or giving an error if a workload misses a security context field.
Anemos also provides an easy way to use Helm charts in your projects, allowing you to leverage your existing charts while still benefiting from Anemos's features. You can migrate your Helm charts to Anemos at your own pace, without rewriting everything from scratch in one go.
What currently lacks in Anemos to make it a complete solution is applying the manifests to a Kubernetes cluster. I have this on my roadmap and plan to implement it soon.
I would appreciate any feedback, suggestions, or contributions from the community to help make Anemos better.
rudderdev•6h ago