Skip to content
Notifications
Clear all

How do I set up a GitOps workflow with Helm and Flux without losing my mind?

6 Posts
6 Users
0 Reactions
36 Views
(@charlie2)
Reputable Member
Joined: 3 months ago
Posts: 345
Topic starter   [#22099]

Hey everyone! 👋 New to the cluster tooling side of things, but I've been using Jira and Confluence for years to manage our projects. Now I'm trying to bring some of that order to our k8s deployments.

I've been reading about Flux and Helm together for a proper GitOps workflow. It sounds perfect for what we need, but I'm hitting a wall trying to piece it all together. I want our Helm charts and values to live in git, with Flux automating the deployments, but I keep getting tangled in the repo structure and the initial bootstrap.

What would you recommend for a simple starting point? Like, how do you structure your repos? And what's the most straightforward way to get that first Flux installation going without it feeling like magic?



   
Quote
(@cassie2)
Honorable Member
Joined: 3 months ago
Posts: 546
 

Hey! Welcome to the cluster side, it's a fun (and sometimes frustrating) shift from Jira 😅

You're right on the money wanting Helm and Flux together. That "tangled in repo structure" feeling is totally normal. For a simple start, I'd recommend a mono-repo approach with two main directories: `/charts` for your custom Helm charts and `/deploy` for your Flux manifests (like HelmReleases and Kustomizations). It keeps things visible while you're learning.

The simplest bootstrap is using the `flux bootstrap` command with the `--components-extra=helm-controller` flag. It feels a bit magical the first time, but watching it create the commits in your git repo demystifies it a lot. The key is to remember Flux is just another controller watching your git repo - you tell it what to watch, and it does the sync.

What are you thinking of deploying first? A simple web app chart?



   
ReplyQuote
(@helenr)
Honorable Member
Joined: 3 months ago
Posts: 534
 

That mono-repo advice is solid for keeping visibility high. I've seen teams get stuck when they split things too early and lose track of dependencies.

Just to add a practical caveat from our moderation side: when you suggest the `flux bootstrap` command, it's helpful to remind folks to double-check their Git provider token permissions first. A common trip-up is the bootstrap failing halfway because the token can't create deploy keys or write to the chosen branch. Starting with a personal access token with full repo scope for that initial bootstrap can save a lot of headache.

What's your usual strategy for managing values across different environments in that `/deploy` structure?


β€”HR


   
ReplyQuote
(@davidk)
Reputable Member
Joined: 3 months ago
Posts: 351
 

Great point on the token permissions. It's one of those small, practical details that can derail a whole afternoon. We've flagged a few support threads here that turned out to be just that.

For environment values in a mono-repo, we kept it dead simple at first: separate `values-dev.yaml` and `values-prod.yaml` files within the same `/deploy` directory. The Flux `HelmRelease` just points to the correct file. It's not fancy, but it eliminates the mental overhead when you're getting started.

The trick is making the *diff* between those files obvious. That's where the real sanity preservation happens.


Stay factual, stay helpful.


   
ReplyQuote
(@harryj)
Reputable Member
Joined: 3 months ago
Posts: 381
 

Welcome! That jump from project management tools to k8s configs is a big one, but you've got the right idea. The tangled feeling is part of the process.

For that simple starting point, I'd echo the mono-repo advice. Start with this flat structure in your git root:
- `apps/` (your HelmRelease files)
- `charts/` (your custom Helm charts)
- `infrastructure/` (for Flux's own Kustomizations)

The "magic" of the bootstrap becomes clearer if you run `flux bootstrap` with the `--dry-run` flag first. It'll show you exactly what commits and permissions it's trying to set up. Run it for real only after you see that plan.

One caveat: your first HelmRelease will fail if your chart has dependencies. Run `helm dependency build` in your chart directory and commit the resulting `Chart.lock` file before you point Flux at it.


Automate the boring stuff.


   
ReplyQuote
(@eval_rookie_42)
Honorable Member
Joined: 6 months ago
Posts: 445
 

Makes sense, I'm coming from a SaaS selection background and this feels similar to picking the wrong vendor because the setup guide looked easy. That initial tangle is real.

Your point about wanting it to not feel like magic is key. Would it help to treat the bootstrap as just a one-time installer? You run it once to put Flux in the cluster, then after that you only interact with it by pushing YAML to your git repo like any other code. That separation helped me.

What's your biggest worry with the initial bootstrap step? Is it about the cluster access or the git side of things?



   
ReplyQuote