【问题标题】:Helm Release with existing resources使用现有资源发布 Helm
【发布时间】:2021-09-04 02:59:20
【问题描述】:

以前我们只使用helm template 来生成清单并应用到集群,最近我们开始计划使用helm install 来管理我们的部署,但是遇到了以下问题:

我们的部署是一个简单的后端api,包含“Ingress”、“Service”和“Deployment”,当有新的提交时,将触发管道进行部署。 我们计划使用短提交 sha 作为镜像标签和 helm 发布名称。这是命令 helm upgrade --install releaseName repo/chartName -f value.yaml --set image.tag=SHA

这第一次运行得很好,但是当我创建另一个版本时它失败并出现以下错误消息

rendered manifests contain a resource that already exists. Unable to continue with install: Service "app-svc" in namespace "ns" exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key "meta.helm.sh/release-name" must equal "rel-124": current value is "rel-123"

错误消息很清楚问题是什么,但我只是想知道在这种情况下使用 helm 的“正确”方式是什么?

为新版本卸载所有内容是不切实际的,而且我也不想继续使用相同的版本。

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    您已经以“正确”的方式进行操作,只是不要更改 release-name。这是 Helm 识别资源的关键。您之前使用的发布名称 (rel-123) 似乎与现在使用的名称 (rel-124) 不同。

    要解决您当前的问题,您应该能够通过更新有问题的资源上的注释 meta.helm.sh/release-name 的值来继续。应该这样做:

    kubectl annotate --overwrite service app-svc meta.helm.sh/release-name=rel-124
    

    【讨论】:

    • 感谢帮助,我想我误解了发布的概念。我认为releaseName是跟踪版本的东西,我相信我们可以使用相同的releaseName但不同的图表版本+应用版本来跟踪版本
    猜你喜欢
    • 2021-12-23
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2022-11-11
    • 1970-01-01
    • 2015-08-13
    • 2011-01-17
    相关资源
    最近更新 更多