diff --git a/pkg/action/action.go b/pkg/action/action.go index c2a27940f..f7fb68a6b 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -372,6 +372,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)