Skip to main content
In this lesson we explain how the Helm controller in Flux works together with the source controller to manage Helm charts and chart artifacts. At a high level:
  • The source controller fetches Helm charts from different sources (Git repositories, Helm repositories, OCI registries, S3 buckets) and packages them as chart artifacts.
  • The Helm controller watches Kubernetes HelmRelease custom resources, consumes chart artifacts produced by the source controller, and performs Helm operations (install, upgrade, uninstall, test, rollback) to reconcile the desired release state.
Before you begin, ensure Flux is installed and the Flux controllers are running in the flux-system namespace. See the Flux documentation for installation and prerequisites: Flux - Installation.

Source controller: fetching and packaging charts

The source controller is responsible for pulling charts and producing versioned chart artifacts that other controllers (like the Helm controller) can consume. Typical workflows include:
  • Fetching multiple charts from a Git repository and packaging them as tar artifacts.
  • Indexing and packaging charts from a Helm repository (for example, Bitnami) into tar artifacts.
  • Publishing chart artifacts from OCI registries or object stores.
Example: create a Git source for charts and a HelmRepository source for Bitnami:
You can inspect the artifacts downloaded by the source controller by exec’ing into the source-controller pod and listing the data/ directory:
These files show the raw assets the source controller has retrieved and indexed.

Helm controller: reconciling HelmRelease resources

The Helm controller reacts to HelmRelease custom resources. A HelmRelease describes the desired state of a Helm release (which chart, which version, and what values). When a HelmRelease is created or modified, the Helm controller:
  1. Creates a HelmChart object that requests a specific chart and version.
  2. Waits for the source controller to produce the corresponding HelmChart artifact.
  3. Consumes the artifact and runs the Helm operations required to install or upgrade the release.
  4. Optionally runs tests, handles rollbacks, and removes releases when the HelmRelease is deleted.
Example: create a HelmRelease that points to the bitnami HelmRepository:
When the HelmRelease is reconciled for the first time, the Helm controller will create a HelmChart resource that asks for the specified chart version. The source controller then produces the HelmChart artifact for the requested chart. Example HelmChart object generated by the source controller:
After the artifact is produced you can also observe the helmchart directory under the source controller’s data directory:
The source controller produces versioned chart artifacts (HelmChart). The Helm controller watches HelmRelease objects, looks up the matching HelmChart artifact, and executes Helm operations to reconcile the release to the desired state.

Helm controller responsibilities

That’s all for now.

Watch Video