我们过去通常使用普通的kubectl命令来部署kubernetes资源,以用于服务,部署,configmap等。现在,我们需要开始使用Helm 3并将其集成到管道中,但是当我尝试运行helm upgrade命令时,出现以下错误:
fcn_evaluated = sess.run(fcn)
print(fcn_evaluated)
因此,这些资源从未使用helm创建,因为通常使用kubcetl apply命令创建。
只需知道如何在管道中使用Helm,而无需重新创建k8s资源。我发现唯一可行的解决方法是删除资源,然后使用Helm重新部署。
下面是我尝试的命令:
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: namespace: default
谢谢, 艾莉
答案 0 :(得分:3)
请参阅helm3 Adopt resources into release with correct instance and managed-by labels
的此功能如果现有资源具有正确的meta.helm.sh/release-name和meta.helm.sh/release-namespace批注,并且尝试创建目标集群中已经存在的资源,Helm将不再出错。与标签选择器app.kubernetes.io/managed-by=Helm匹配。这有助于零停机时间迁移到Helm 3,以管理现有部署,并允许Helm“采用”以前创建的现有资源。
为了允许Helm采用现有资源,请添加发布元数据和管理者标签:
Inner exception com.mongodb.MongoSocketWriteException handled at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible:
at com.mongodb.internal.connection.InternalStreamConnection.translateWriteException (InternalStreamConnection.java525)
答案 1 :(得分:2)
老实说,虽然FL3SH的答案是您正在寻找的…最好的选择是删除您的k8s资源。 有一些例外情况:
答案 2 :(得分:0)
您可以添加所有头盔标签/注释。您可以使用helm template
检查所有头盔标签和花药成分。然后,您可以使用kubectl label
或kubectl annotate
添加缺少的标签/注释。
我个人从未尝试过,因为工作量太大,最后,如果它们是由Deployment / statefulset管理的,则必须重新创建带有新标签的Pod。