0

更新大使舵图

helm upgrade --install --wait ambassador -f ambassador-helm-values.yaml stable/ambassador

失败:

UPGRADE FAILED
Error: kind ClusterRoleBinding with the name "ambassador-crds" already exists in the cluster and wasn't defined in the previous release. Before upgrading, please either delete the resource from the cluster or remove it from the chart
Error: UPGRADE FAILED: kind ClusterRoleBinding with the name "ambassador-crds" already exists in the cluster and wasn't defined in the previous release. Before upgrading, please either delete the resource from the cluster or remove it from the chart

删除 ClusterRoleBindingambassador-crds并尝试运行helm upgrade命令。这会ambassador-crds再次生成并失败并显示相同的错误消息。

4

2 回答 2

0

您是否尝试先通过 kubectl 安装特定资源?要生成 yaml,您可以在调试模式下使用干运行。例如:

helm install . --dry-run --debug --generate-name

这应该在您的屏幕上输出生成的资源。然后将之前版本中未定义的 crd 复制到单独的 yaml 文件(即 customResourceDefinition.yaml)中,并使用 kubectl 手动安装:

kubectl apply -f ./customResourceDefinition.yaml

之后,您可以helm upgrade再次尝试该命令。也许升级命令真的很严格,在采取任何行动之前每个资源都必须存在。

这只是一种解决方法和猜测。我以前没有遇到过这个问题,根本没有使用过helm upgrade。希望能帮助到你 :)

于 2020-01-12T14:28:48.160 回答
0

我正在使用掌舵版本2.15.*。这似乎是 helm(或 Tiller)上的错误。该选项--cleanun-on-fail似乎也不起作用。我曾经删除抱怨的资源并再次运行掌舵升级,但我发现不得不重复执行此操作很烦人。对我有用的是添加选项--atomic。如果提供,升级过程会回滚在升级失败的情况下所做的更改。

Tiller(服务器端数据库)损坏似乎是一个问题。请参阅 github 中的讨论:https ://github.com/helm/helm/issues/6031

于 2020-02-14T12:01:55.760 回答