【发布时间】:2020-12-22 00:19:53
【问题描述】:
几周前我使用kubectl apply ... 将应用程序部署到k8s,该应用程序在产品中运行。
现在我们切换到 helm 安装并构建我们想要用它更新应用程序的图表。
问题是已经部署了应用程序的秘密/配置映射等工件
我无法删除。
在运行时helm upgrade --install app chart/myapp -n ns
我遇到了类似的错误
错误:呈现的清单包含已存在的资源。 无法继续安装:现有资源冲突: 命名空间:ns,名称:bts,existing_kind:/v1,Kind=Secret,new_kind: /v1, 种类=秘密
有什么技巧可以用来在不删除秘密/configmap的情况下克服这个问题吗?
【问题讨论】:
-
您是在自己的客户集群上使用 Azure VM 执行此操作,还是在 Azure 上的托管 k8s 服务(如 AKS)上执行此操作?所以在 AKS - Helm 已经预装了。您可以从这里查看更多详细信息:docs.microsoft.com/en-us/azure/aks/kubernetes-helm
-
@HassanRaza - 我们正在管理我们的 k8s,并且已经安装了 helm,它工作正常,这不是问题 :)
-
不,helm 没有导入现有资源的能力。您需要在 helm 中重命名它们,以免名称冲突,或者从正在运行的集群中删除它们。 github.com/helm/helm/issues/6561
-
使用 Helm 部署资源时,会在资源中创建一些注解。您可以尝试使用不同的名称部署密钥,然后尝试将注释复制到正在运行的密钥并再次部署。从理论上讲,它应该可以工作,因为控制注释将存在于旧资源中。我会在我的实验室环境中尝试并尽快返回。
-
这可能是不可能的,因为 helm 只能升级由 helm 安装的资源。如果这些资源是由 helm 安装的,您可以尝试添加这些特定的标签和注释来欺骗 helm 但是这可能是不可能的
标签: amazon-web-services azure kubernetes kubernetes-helm