如何修复helm has no deployed releases错误(解决办法)

介绍在 Helm 中,该helm upgrade [release-name] [chart]命令可让你将版本升级到新版本。但是,尝试升级你的版本有时会产生“  helm has no deploy release  ”错误。如何修复helm has no deployed releases错误?在本教程中,我们将介绍“ helm has no deploy release ”错误的原因以及几种可能的解决方案。先决条件

  • 访问终端/命令行
  • 一个 Kubernetes 集群设置并运行
  • Helm 安装和配置
什么原因导致“helm 没有部署的版本”错误?从 Helm 2.7.1 开始,helm upgrade [release-name] [chart]在之前失败的版本上运行该命令会产生以下错误:
Error: UPGRADE FAILED: [ release-name] has no deployed releases

如何修复helm has no deployed releases错误(解决办法)

文章图片
Helm 2 将当前部署清单与新部署清单进行比较以应用必要的补丁。但是,它不会比较清单之间的资源状态。如果之前的部署失败,则集群很可能缺少一些资源。在 Helm 2.7.1 之前,Helm 会尝试在不安装缺失资源的情况下升级部署。为了防止这种情况,从 2.7.1 版本开始,Helm 使用最新的成功部署作为升级的基线。如果没有发现部署成功,系统会返回“  helm has no deployedreleases  ”错误信息。helm has no deployed releases解决办法有几种方法可以修复“helm has no deployed release”错误,其中大部分方法侧重于更改导致问题的失败部署的状态:解决方案 1:更改部署状态
在 Helm 2 中,将发布状态更改为已部署可让你绕过该问题:
kubectl -n kube-system patch configmap [ release name].[ release version] --type=merge -p '{"metadata":{"labels":{"STATUS":"DEPLOYED"}}}'

其中:
  • [release name]  是你要更新的版本的名称。
  • [release version]  是你发布的当前版本。
注意:请记住,上述解决方案仅用于绕过该问题。你仍然需要进行手动调整以添加缺少的资源。由于 Helm 3 将部署历史存储为Kubernetes secrets。检查部署机密:
kubectl get secrets

找到与失败部署相关的secrets,然后使用以下命令更改部署状态:
kubectl patch secret [ name-of-secret-related-to-deployment] --type=merge -p '{"metadata":{"labels":{"status":"deployed"}}}'

解决方案 2:清理失败的部署
如何修复helm has no deployed releases错误?删除当前版本并从头开始创建一个新版本可以解决此问题。要使用 Helm 2 执行此操作,请使用:
helm delete --purge [ release name]

其中:
  • [release name]是要删除的版本的名称。
如何修复helm has no deployed releases错误(解决办法)

文章图片
从 Helm 3 开始,删除版本需要以下uninstall命令:
helm uninstall [ release name]

如何修复helm has no deployed releases错误(解决办法)

文章图片
1. 删除失败发布的另一种方法是首先检查你的部署状态:
helm list -a

2. 如果你的发布状态不是deployed,请检查部署机密:
kubectl get secrets

3. 描述secrets列表上的最后一项以检查其状态:
kubectl describe secret [ secret name]

其中:
  • [secret name]  是你要检查的机密的名称。
4. 如果机密与失败的部署具有相同的状态,请使用以下命令将其删除:
kubectl delete secret [ secret name]

5. 升级你的版本:
helm upgrade [ release name]

解决方案 3:强制升级
如何修复helm has no deployed releases错误?解决此问题的另一种方法是使用以下命令强制升级:
helm upgrade [ release name] --force

其中:
  • [release name]  是要升级的版本的名称。
在幕后,这与 执行类似的工作helm delete --purge,在安装新版本之前删除以前的版本。这可能会导致服务中断,使其不适用于某些版本。结论遵循本教程后,你应该知道helm has no deployed releases解决办法,并能够将你的发行版升级到新版本,而不会收到“ helm has no installed versions ”错误。

    推荐阅读