有什么方法可以将舵图应用于现有资源吗?
例如:我已经手动创建了一个命名空间,现在我想“helmify”它。但是当我向图表添加新的模板文件并运行
helm upgrade
时,我收到错误:
Error: UPGRADE FAILED: no Namespace with the name "ingress-haproxy" found
我看到了这个问题,但它不是很有帮助:https://github.com/kubernetes/helm/issues/1999
是的,您可以将现有资源导入到 Helm Chart 中。我只用helm3进行测试,所以也许其他版本有差异需要你去发现。
annotations:
meta.helm.sh/release-name: <release-name>
meta.helm.sh/release-namespace: <your namespace>
labels:
app.kubernetes.io/managed-by: Helm
手动创建的命名空间是否名为“ingress-haproxy”?
从您收到的错误看来:
无论如何,目前来说答案是否定的,helm 不支持忽略现有资源。 您可以关注此问题以获取任何更新:https://github.com/helm/helm/issues/4824
目前您唯一的机会是删除所有对象并通过 helm install 重新创建它们。如果这是不可接受的,请将它们保留在适当的位置并通过 kubectl apply 管理它们并通过 helm Chart 管理所有其他对象。
您可以通过使用版本名称和版本命名空间修补现有资源来实现此目的
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 ...