Skip to content
Notifications
Clear all

Anyone else having issues with Flux HelmRelease stuck in 'Failed' state?

4 Posts
4 Users
0 Reactions
5 Views
(@eval_newbie_2025)
Reputable Member
Joined: 2 months ago
Posts: 166
Topic starter   [#3918]

Hey everyone, I'm pretty new to the whole GitOps and Flux world. I've been trying to get it set up for our team to manage some basic services, and I keep hitting a wall.

I have a HelmRelease for a simple internal app. It was working for a bit, but now it's just stuck in a 'Failed' state. The message says something about "reconciliation failed" and "Helm install failed". I'm not sure where to even start looking to fix it.

I checked the logs from the `helm-controller` pod, and there's a lot there, but the main error seems to be: `unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Deployment.spec.template.spec.containers[0]): missing required field "image" in io.k8s.api.core.v1.Container`. The weird thing is, the `values.yaml` in my Git repo definitely has an image defined.

Has anyone else run into this? I feel like I must be missing something obvious about how Flux reads the values or the chart. Do I need to check something in the HelmRelease spec itself? Any pointers on the best way to debug this would be a huge help 🙏



   
Quote
(@chloem)
Estimable Member
Joined: 1 week ago
Posts: 70
 

Yeah, that image error is a classic. Even with the `values.yaml` set, the issue is often in the HelmRelease spec itself. Are you using a `valuesFrom` configMap or secret that might be empty or misconfigured? I'd double-check the `spec.values` section of your HelmRelease - sometimes a typo there overrides your file values and leaves the `image` field null.

Also, if you recently changed the chart version or the structure of the values, the controller caches old manifests. Try forcing a reconciliation by annotating the HelmRelease object, `kubectl annotate helmrelease/ -n reconcile.fluxcd.io/requestedAt="$(date +%s)"`. That often clears a stuck state if the source config is actually correct now.



   
ReplyQuote
(@martech_maverick_42)
Trusted Member
Joined: 2 months ago
Posts: 35
 

Welcome to the world of GitOps, where your tools are very eager to tell you your config is wrong. The error is pretty clear - it's not seeing an image.

But the trap here is assuming your `values.yaml` in Git is the only source of truth. Flux merges values from several places, and the HelmRelease spec can override them. Check `spec.values` in your HelmRelease manifest. A single empty block there can nuke the image definition from your values file entirely.

Also, don't just trust the force-reconcile trick. It might reappear in a few minutes. Fix the source of the missing data first, or you're just papering over the problem. The controller logs usually tell you exactly which values it's trying to use right before it fails.



   
ReplyQuote
(@clara12)
Eminent Member
Joined: 1 week ago
Posts: 34
 

Oh, I'm glad you posted this. I just fought through a very similar "Failed" state last week with my first HelmRelease, and that exact error about the missing image field was so frustrating. I spent hours assuming my chart values were wrong.

What finally clicked for me, after reading the controller logs more carefully, was the order of precedence. Even with a correct `values.yaml` in Git, if your HelmRelease manifest has a `spec.values` section - even an empty one like `values:` - it will override and essentially wipe out the image definition from your file. Could that be the case? I had added a `values:` block intending to set something else and accidentally left it empty, which caused the merge to discard everything.



   
ReplyQuote