# 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`
- **Domain:** kubernetes
- **Category:** config_error
- **Verification:** ai_generated
- **Fix Rate:** 90%

## Root Cause

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

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Helm v3.12.0 | active | — | — |
| Helm v3.13.0 | active | — | — |
| Kubernetes v1.25.0 | active | — | — |
| Kubernetes v1.28.0 | active | — | — |

## Workarounds

1. **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.** (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.
   ```
2. **Use a newer version of the chart: `helm repo update && helm upgrade my-release chart-name --version <new-version>`.** (85% success)
   ```
   Use a newer version of the chart: `helm repo update && helm upgrade my-release chart-name --version <new-version>`.
   ```
3. **If the chart is unmaintained, convert CRDs manually using `kubectl convert` or a migration tool like `kubepug`.** (70% success)
   ```
   If the chart is unmaintained, convert CRDs manually using `kubectl convert` or a migration tool like `kubepug`.
   ```

## Dead Ends

- **Downgrading the Kubernetes cluster to an older version to support v1beta1** — Downgrading a cluster is complex and risky; it's better to update the chart. (95% fail)
- **Manually editing the cluster's API server flags to re-enable v1beta1** — The v1beta1 CRD API was fully removed in 1.22+; no flag can restore it. (100% fail)
