Today we’re publishing an alpha release of our Helm integration in Flux. It makes sure your Helm chart releases are kept up to date with what’s in git. You can try it out using the example git repository. Read on to see what it’s all about.

What is Helm?

People often mention the steep Kubernetes learning curve, and much of the time the first cliff-face they have encountered is the multitude of kinds of resource you can create in Kubernetes. You have to understand at least a handful of them - and the right handful at that - to be able to make anything go.

Helm helps you tidy away some of this complexity, by bundling together all the resources you need to run something, and making it generic so other people can adapt it for their own environment without knowing all the details.

What is Flux?

While Helm helps with getting applications running, you need other tooling to keep them up to date when something changes. Applying new configuration to your cluster from your CI pipeline is a fine choice, that lots of people go for, but we think we have a better one: make your cluster equal your configuration. That’s what Flux does (and Weave Cloud, under “Deploy”).

It’s a subtle shift in thinking but it has some nice properties. Your workflow can now go through git, so it can involve PRs, reviews, reverting commits, and so on. Mechanically and conceptually it’s very simple: whatever Kubernetes manifests are in git, Flux applies them to the cluster.

How can this work when you’re using Helm, and don’t have Kubernetes manifests? To do this, we have to capture the information you supply when you invoke helm install or helm upgrade, and put it in a resource of their own, in git. This represents the fact of the chart being released, which Flux will then ensure is the case. Changes to either that resource, or the chart it refers to, will result in the chart being re-released.

Try it for yourself

This git repository has an example of how you would use Flux to drive Helm releases. The README also has step-by-step instructions. Have fun!