diff --git a/pkg/action/action.go b/pkg/action/action.go index 75b6cf8a0..8e41cede5 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -412,6 +412,29 @@ func (cfg *Configuration) renderResources(ch *chart.Chart, values common.Values, return hs, b, notes, nil } +// ensureKubeCompatibility verifies the chart's kubeVersion requirement. +func ensureKubeCompatibility(ch *chart.Chart, caps *common.Capabilities) error { + if ch == nil || caps == nil { + return nil + } + meta := ch.Metadata + if meta == nil { + return nil + } + kubeReq := meta.KubeVersion + if kubeReq == "" { + return nil + } + + kubeVer := caps.KubeVersion.String() + + if chartutil.IsCompatibleRange(kubeReq, kubeVer) { + return nil + } + + return fmt.Errorf("chart requires kubeVersion: %s which is incompatible with Kubernetes %s", kubeReq, kubeVer) +} + // RESTClientGetter gets the rest client type RESTClientGetter interface { ToRESTConfig() (*rest.Config, error)