kubernetes config_error ai_generated true

Error: UPGRADE FAILED: failed to install CRD: unable to recognize "": no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1beta1"

ID: kubernetes/helm-upgrade-failed-api-version-removed

Also available as: JSON · Markdown · 中文
90%Fix Rate
85%Confidence
1Evidence
2023-06-10First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
Helm v3.12.0 active
Helm v3.13.0 active
Kubernetes v1.25.0 active
Kubernetes v1.28.0 active

Root Cause

The Helm chart references an old API version (v1beta1) that was removed in Kubernetes 1.22+, causing CRD installation to fail.

generic

中文

Helm chart 引用了旧版 API(v1beta1),该版本在 Kubernetes 1.22+ 中被移除,导致 CRD 安装失败。

Official Documentation

https://helm.sh/docs/topics/kubernetes_apis/#removed-apis

Workarounds

  1. 90% success Update the Helm chart to use apiextensions.k8s.io/v1: run `helm pull chart-name --untar`, edit the CRD YAML to change `apiVersion: apiextensions.k8s.io/v1beta1` to `apiVersion: apiextensions.k8s.io/v1`, then `helm upgrade --install` with the local chart.
    Update the Helm chart to use apiextensions.k8s.io/v1: run `helm pull chart-name --untar`, edit the CRD YAML to change `apiVersion: apiextensions.k8s.io/v1beta1` to `apiVersion: apiextensions.k8s.io/v1`, then `helm upgrade --install` with the local chart.
  2. 85% success Use a newer version of the chart: `helm repo update && helm upgrade my-release chart-name --version <new-version>`.
    Use a newer version of the chart: `helm repo update && helm upgrade my-release chart-name --version <new-version>`.
  3. 70% success If the chart is unmaintained, convert CRDs manually using `kubectl convert` or a migration tool like `kubepug`.
    If the chart is unmaintained, convert CRDs manually using `kubectl convert` or a migration tool like `kubepug`.

中文步骤

  1. 更新 Helm chart 使用 apiextensions.k8s.io/v1:运行 `helm pull chart-name --untar`,编辑 CRD YAML 将 `apiVersion: apiextensions.k8s.io/v1beta1` 改为 `apiVersion: apiextensions.k8s.io/v1`,然后使用本地 chart 执行 `helm upgrade --install`。
  2. 使用更新版本的 chart:`helm repo update && helm upgrade my-release chart-name --version <新版本>`。
  3. 如果 chart 不再维护,使用 `kubectl convert` 或迁移工具(如 kubepug)手动转换 CRD。

Dead Ends

Common approaches that don't work:

  1. Downgrading the Kubernetes cluster to an older version to support v1beta1 95% fail

    Downgrading a cluster is complex and risky; it's better to update the chart.

  2. Manually editing the cluster's API server flags to re-enable v1beta1 100% fail

    The v1beta1 CRD API was fully removed in 1.22+; no flag can restore it.