GitOps · · 3 min read

GitOps: Episode Five — Managing Apps with Helm Charts

Learn how to use Helm charts with GitOps. Package applications, manage versions, and deploy cleanly through your Git workflow with FluxCD.

Managing Apps with Helm Charts
Photo by Christopher Gower / Unsplash

As we advance on our GitOps journey, it’s time to introduce one of the most powerful tools for Kubernetes deployments: Helm charts.

In this post, we’ll explore what Helm charts are, why they’re useful in a GitOps workflow, and how you can manage Helm-based applications with FluxCD — keeping everything declarative and Git-driven.

Let’s build on everything we’ve learned so far.

1. What Are Helm Charts, and Why Use Them with GitOps?

At its core, Helm is a package manager for Kubernetes.

Instead of manually writing multiple YAML files for a complex application — deployments, services, ingresses, config maps — you can use a Helm chart to bundle them all together in a reusable, customizable package.

Think of a Helm chart like a recipe:

This fits naturally into GitOps because:

In short: Helm simplifies app management, and GitOps simplifies app delivery. Together, they’re a powerful combo.

2. Installing a Helm Controller with FluxCD

Flux uses a component called the Helm Controller to manage Helm charts declaratively.

If you installed FluxCD recently with bootstrapping commands, the Helm Controller may already be present.

You can check if it’s running:

kubectl get pods -n flux-system

Look for a pod like helm-controller-xxxxx.

If it’s missing, you can add the Helm Controller manually by enabling it through Flux installation or applying its manifest.

Once the Helm Controller is active, your cluster is ready to manage Helm releases through Git.

3. Deploying a Helm Chart with FluxCD

Let’s go through the basic flow of managing an application using a Helm chart.

First, we define a HelmRepository — this tells Flux where to find the chart we want.

Example: setting up Bitnami’s NGINX chart repository.

apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
  name: bitnami
  namespace: flux-system
spec:
  interval: 10m
  url: https://charts.bitnami.com/bitnami

This tells Flux to regularly pull Helm charts from Bitnami’s public repository.

Next, we define a HelmRelease — this tells Flux what chart to install, what version to use, and what custom values to apply.

apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: my-nginx
  namespace: default
spec:
  interval: 5m
  chart:
    spec:
      chart: nginx
      sourceRef:
        kind: HelmRepository
        name: bitnami
      version: "13.2.19"
  values:
    service:
      type: LoadBalancer

This example will deploy the Bitnami nginx chart into your cluster, customized to use a LoadBalancer service.

Both the HelmRepository and HelmRelease files should live in your Git repo (for example under clusters/dev/apps/ if you’re using a multi-environment setup).

Once you push these files to Git, Flux automatically detects the change and deploys the app into your cluster!

4. Advantages of Helm + GitOps Together

Using Helm with GitOps offers several major benefits:

By combining Helm’s flexibility with GitOps automation, you create highly maintainable, scalable deployment workflows.

5. What’s Next

Now that you know how to integrate Helm charts into GitOps with FluxCD, you’re ready for even bigger steps.

In the next post, we’ll dive into automating image updates using GitOps — setting up automation so that new container versions can trigger Git commits and automatic deployments.

This takes GitOps from being just about applying YAML to becoming a true continuous delivery powerhouse.

Stay tuned — you’re building real production-grade GitOps skills now!


Previous Posts in the Series


Want to keep leveling up your GitOps skills? Subscribe to get future posts, tutorials, and hands-on guides delivered straight to your inbox!

Read next