Helm 升级阶段升级失败

问题描述 投票:0回答:3

我在 helm 升级阶段收到以下错误。我做了以下更改

apiVersion: networking.k8s.io/v1beta1
apiVersion: networking.k8s.io/v1
有人可以让我知道我遇到此问题的原因以及解决方案吗?非常感谢任何帮助

Error: UPGRADE FAILED: current release manifest contains removed kubernetes api(s) for 
this kubernetes version and it is therefore unable to build the kubernetes objects for 
performing the diff. error from kubernetes: unable to recognize "": no matches for 
kind "Ingress" in version "networking.k8s.io/v1beta1"

kubernetes kubernetes-helm kubernetes-ingress kubectl azure-aks
3个回答
3
投票

您遇到此问题的原因是 Helm 尝试在当前部署的版本(其中包含当前 Kubernetes 版本中删除的 Kubernetes API)与您通过更新/支持的 API 版本传递的图表之间创建差异补丁。因此,当 Kubernetes 删除 API 版本时,Kubernetes Go 客户端库无法再解析已弃用的对象,因此 Helm 在调用该库时会失败。

Helm 有关于如何从该场景中恢复的官方文档: https://helm.sh/docs/topics/kubernetes_apis/#updating-api-versions-of-a-release-manifest


1
投票

Helm 不喜欢旧版本的模板包含已删除的 apiVersion,并导致上述错误。要修复此问题,请按照 Helm 的官方文档中的步骤进行操作。

因为我们在 apiVersion 被删除之前没有升级它,所以我们必须遵循手动方法。我们有相当多的服务需要更新,位于两个不同的 kubernetes 集群(生产和测试)中。因此有一个脚本可以更新入口对象的 apiVersion。您可以在here找到该脚本。

该脚本假设您要将networking.k8s.io/v1beta1更改为networking.k8s.io/v1。如果您对其他 apiVersion 有问题,请更改第 30 行脚本中的这些值。如果需要进一步更改,请更新您的 helm 图表模板并部署/应用新的 helm 图表。


0
投票

现在有一个 helm 插件可以解决这个问题 https://github.com/helm/helm-mapkubeapis

© www.soinside.com 2019 - 2024. All rights reserved.