Safeguard
Developer Tools•

Can kubeVersion stop a shared Helm chart installing on old clusters?

The kubeVersion field in Chart.yaml makes Helm fail an install on unsupported Kubernetes versions. How to set it for a shared chart and what it cannot do.

Safeguard Security Team
4 min read

Yes. The optional kubeVersion field in Chart.yaml holds a SemVer constraint on supported Kubernetes versions, and Helm checks it at install time, failing if the cluster version is unsupported. It is a cheap guardrail for shared charts, with clear limits.

What Helm documents

Helm's chart documentation describes kubeVersion as an optional SemVer constraint on supported Kubernetes versions. Helm checks it at install time and fails if the cluster version is not supported. Constraints such as >= 1.13.0 < 1.15.0 are supported, and you can combine them with || for OR logic.

Example:

apiVersion: v2
name: platform-service
version: 2.3.0
kubeVersion: ">= 1.27.0"

The constraint above is an illustration. Pick a floor that matches the Kubernetes versions your platform supports, using your own support policy.

Why a shared chart wants it

A shared chart can render objects that older clusters do not understand, or that behave differently. Without a constraint, the failure shows up later, as a confusing API error or a silently ignored field. With one, Helm stops at install with a clear reason.

For security, the more interesting case is a field that older clusters ignore. If a chart sets a security related field that an old API server drops without complaint, the workload runs without the protection you thought you had. A floor on the cluster version prevents that class of surprise. Verify for your own objects whether older versions ignore a field, using Kubernetes documentation for the specific field.

Setting the floor

  1. List the Kubernetes API versions and fields the chart's templates use.
  2. Find the earliest Kubernetes release that supports all of them.
  3. Set kubeVersion to that floor, or a range if you know an upper bound that is unsupported.
  4. Treat raising the floor as a notable change, with release notes. Consumers on older clusters will fail to install the new chart version.
  5. Test installs against your oldest supported cluster in CI.

What it does not do

QuestionAnswer
Does it check the chart is safe?No, it checks cluster version only
Does it stop upgrades of existing releases?The docs describe the check at install time, so test your upgrade path
Does it replace testing on older clusters?No, it only blocks, it does not prove compatibility
Does it detect deprecated APIs in use?No

On the second row, test it in your environment rather than assuming either way.

Version bumps for a floor change

Raising kubeVersion changes who can install the chart, so it affects consumers like a breaking change. Many teams bump the major version for it, but that is a policy choice. Decide it once and write it down. See version vs appVersion.

Pair it with review and signing

A guardrail inside a chart is only as trustworthy as the chart. Consumers who care that the chart is the reviewed one can use provenance. See signing and verifying a Helm chart, and note what helm verify does and does not prove.

Where Safeguard fits

Safeguard gates can require review of pull requests that change Chart.yaml, and its evidence automation can record the approvals. The Kubernetes version floor itself is a chart author decision.

Quick check

Is kubeVersion required?

No, it is optional. If you omit it, Helm does not enforce a cluster version.

Can I allow two separate Kubernetes ranges?

Yes. Helm supports combining constraints with the OR operator, written as two vertical bars.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.