如何将 Helm Chart 应用于现有资源?

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

有什么方法可以将舵图应用于现有资源吗?

例如:我已经手动创建了一个命名空间,现在我想“helmify”它。但是当我向图表添加新的模板文件并运行

helm upgrade
时,我收到错误:

Error: UPGRADE FAILED: no Namespace with the name "ingress-haproxy" found

我看到了这个问题,但它不是很有帮助:https://github.com/kubernetes/helm/issues/1999

kubernetes-helm
3个回答
3
投票

是的,您可以将现有资源导入到 Helm Chart 中。我只用helm3进行测试,所以也许其他版本有差异需要你去发现。

  1. 创建您的 helm 修订版(无需现有资源)。
  2. 添加现有资源的标签和注释如下
annotations:
  meta.helm.sh/release-name: <release-name>
  meta.helm.sh/release-namespace: <your namespace>

labels:
  app.kubernetes.io/managed-by: Helm
  1. 头盔升级

1
投票

手动创建的命名空间是否名为“ingress-haproxy”?

从您收到的错误看来:

  1. 命名空间不存在(也许它有一个稍微不同的 名字)..
  2. 您之前已经运行过 helm install,否则它会抱怨不存在的 helm 版本名称。

无论如何,目前来说答案是否定的,helm 不支持忽略现有资源。 您可以关注此问题以获取任何更新:https://github.com/helm/helm/issues/4824

目前您唯一的机会是删除所有对象并通过 helm install 重新创建它们。如果这是不可接受的,请将它们保留在适当的位置并通过 kubectl apply 管理它们并通过 helm Chart 管理所有其他对象。


0
投票

您可以通过使用版本名称和版本命名空间修补现有资源来实现此目的

kubectl patch deployment my-app \-n default \
--patch '{"metadata": {"annotations": {"meta.helm.sh/release-name": "release", "meta.helm.sh/release-namespace": "release-namespace"}, "labels": {"app.kubernetes.io/managed-by": "Helm"}}}'

然后运行:

helm update -n release-namespace release ...
© www.soinside.com 2019 - 2024. All rights reserved.