After years of handling messy, inconsistent yaml files for Kubernetes, I made the switch to Helm five plus years ago, and I haven’t looked back since. Everyone who interacts with Kubernetes should know about Helm by now. It’s a tool that automates the creation, packaging, configuration and deployment of your Kubernetes based applications.
But that's just scratching the surface of what Helm can do, and with the addition of a few simple plugins and tools, Helm can become a really powerful application for managing our deployment resources. Here are those tools.
1. Helmfile - for keeping Helm DRY.
As useful as Helm is, it becomes a lot to manage if you have more than one application or environment, each with their own cycle of new versions and values. Helmfile gives us that with helmfile.yaml. It supports a multi-environment directory structure and the ability to call commands on all children helmfiles.
2. ChartMuseum - for storing Helm Charts
If you need a place to store helm charts, ChartMuseum can be handy. It is a repository designed to work with Google Cloud Storage, Amazon s3, Microsoft Azure blob Storage, and more.
3. Helm Diff - Because everybody needs to run diff
Helm would not be complete without its own diff. And that's where we get the Helm Diff plugin. While simple, it offers a preview of Helm upgrades as a colored diff.
4. Helm Test/Unittest - For local and in cluster unit testing
One of the best tools for the job is Helm Unittest. It allows you to write tests in pure yaml, render them locally, and add nothing to your cluster.
5. Helm Secrets - For Deployment Secret Management
It can be challenging when we need to add secrets to our deployments and want to utilize the best security practices. One of the solutions is the Helm secrets plugin. It utilizes Mozilla SOPS to encrypt and decrypt secrets.
