Skip to content
English
  • There are no suggestions because the search field is empty.

Helm Chart kubeVersion Incompatibility with Kubernetes 1.32 in ArgoCD

Clusters running Kubernetes `1.32` fail to render Helm charts that declare kubeVersion: `< 1.32.0-0`, while identical workloads succeed on Kubernetes `1.31.x` cluster caused by ArgoCD passing the detected cluster version to `helm template --kube-version` during manifest generation.

When ArgoCD (or the Akuity managed platform) generates manifests for an application backed by a Helm chart, it passes the target cluster's Kubernetes version to the helm template command via the --kube-version flag. This is by design it allows Helm charts to render version-aware manifests.

However, when a chart's Chart.yaml declares a kubeVersion constraint with an upper-bound that excludes the current cluster version (e.g., >= 1.28.0-0 < 1.32.0-0), Helm's built-in semver validation rejects the render, causing ArgoCD manifest generation to fail entirely.

This issue surfaces as a hard error in the ArgoCD UI and blocks all sync operations for the affected application, even if the chart's actual resource definitions are perfectly compatible with Kubernetes 1.32.

Error Message

Failed to load target state: failed to generate manifest for source 1 of 1:
rpc error: code = Unknown desc = Manifest generation error (cached):
kustomize build <path> --enable-helm --helm-kube-version 1.32 ... failed exit status 1:

Error: chart requires kubeVersion: >= 1.28.0-0 < 1.32.0-0
which is incompatible with Kubernetes v1.32.0

Root Cause Analysis:

How ArgoCD Determines the Kubernetes Version for helm template

ArgoCD continuously monitors each registered cluster. Approximately every 10 seconds, the ArgoCD application controller queries the cluster's API server for its metadata — including the Kubernetes server version. This detected version is then forwarded to Helm as:

helm template <chart> --kube-version <detected-version

For a cluster running Kubernetes 1.32.9, ArgoCD passes --helm-kube-version 1.32 (major.minor only). Helm then evaluates this against the chart's declared kubeVersion constraint. Since 1.32 does not satisfy < 1.32.0-0, Helm exits with a non-zero status and manifest generation fails.

Why 1.31.x Clusters Are Unaffected

On clusters running Kubernetes 1.31.x, ArgoCD passes --helm-kube-version 1.31, which satisfies the >= 1.28.0-0 < 1.32.0-0 constraint. Helm renders the chart successfully.

Akuity Platform Behavior

The Akuity managed platform follows the same version detection and passing mechanism as open-source ArgoCD. Akuity does not apply a platform-level Kubernetes version default — it reflects the actual connected cluster's version. Akuity maintains its own compatibility matrix aligned with ArgoCD's upstream support policy.

Resolution:

Option 1 — Preferred: Upgrade the Helm Chart (Permanent Fix)

Request or await an updated chart release from the vendor (e.g., Rancher) that widens the kubeVersion constraint to include 1.32.x.

# Chart.yaml — expected fix from vendor
kubeVersion: ">= 1.28.0-0 < 1.33.0-0"

Ref: rancher/charts GitHub repository for a patched release of rancher-logging.


Option 2 — Workaround: Override kubeVersion During Manifest Generation

ArgoCD supports explicitly passing --helm-kube-version as part of its manifest generation configuration. This bypasses the auto-detected cluster version for rendering purposes only — it does not affect actual cluster behavior.

Add the following to your ArgoCD Application spec:

# ArgoCD Application manifest
spec:
source:
helm:
passCredentials: false
kustomize:
buildOptions: --enable-helm --helm-kube-version=1.31

Or, if using an app-of-apps pattern or Akuity platform settings, specify the build option at the application or project level.

⚠️ Important: Setting --helm-kube-version=1.31 is a rendering override only. Ensure that all rendered resources are genuinely compatible with your actual cluster version (1.32.x) before applying this workaround in production.


Verification Steps:

After applying a workaround or fix, verify resolution:

  1. Navigate to the affected ArgoCD Application in the UI.
  2. Trigger a Hard Refresh to clear the manifest generation cache.
  3. Confirm the application moves to Synced / Healthy state.
  4. Check that no Manifest generation error (cached) message appears.