Skip to content

kubeVersion: >=1.29.0 in v0.9.1 chart breaks deployment on EKS (and GKE/AKS) clusters #841

@bogdan-cresta

Description

@bogdan-cresta

v0.9.1 introduced kubeVersion: ">=1.29.0" in Chart.yaml for the first time. This causes helm upgrade to fail on managed Kubernetes clusters (EKS, GKE, AKS) that append a provider-specific pre-release suffix to their reported version (e.g. v1.34.6-eks-bbe087e).

Root cause

Helm uses the Masterminds/semver v3 library for constraint evaluation. In that library, any version with a pre-release tag is automatically excluded from constraints that don't themselves include a pre-release tag — regardless of whether the numeric part satisfies the range. The function constraintGreaterThanEqual short-circuits on v.Prerelease() != "" && !includePre before even doing the numeric comparison. So 1.34.6-eks-bbe087e fails >=1.29.0 despite 1.34 > 1.29.

Error message:

Helm upgrade failed: chart requires kubeVersion: >=1.29.0
which is incompatible with Kubernetes v1.34.6-eks-bbe087

Fix

Change the constraint to include a pre-release anchor, which sets includePre = true for the constraint group:

# Chart.yaml
kubeVersion: ">=1.29.0-0"

The -0 is the standard semver convention for "this range includes pre-releases." This is the same pattern used by many other charts (e.g. cert-manager, ingress-nginx).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions