Сбой обновления таблицы Ambassador Helm, так как ресурс уже существует в кластере и не был определен в предыдущей версии. - PullRequest
0 голосов
/ 06 января 2020

Обновление таблицы послов с помощью

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

Удалил ClusterRoleBinding ambassador-crds и попытался запустить команду helm upgrade. Который генерирует ambassador-crds снова и завершается ошибкой с тем же сообщением об ошибке.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Я использую версию шлема 2.15.*. Кажется, это ошибка на руле (или Tiller). Опция --cleanun-on-fail, похоже, тоже не работает. Я использую, чтобы удалить ресурс, на который жалуются, и снова запустить обновление руля, но меня раздражает необходимость делать это повторно. Для меня работает добавление опции --atomic. Если предусмотрено, процесс обновления откатывает изменения, сделанные в случае неудачного обновления.

Кажется, что проблема связана с повреждением Tiller (на стороне сервера). Смотрите обсуждение здесь в github: https://github.com/helm/helm/issues/6031

0 голосов
/ 12 января 2020

Вы пытались сначала установить указанный c ресурс через kubectl? Для генерации yamls вы можете использовать dry -run в режиме отладки. Например:

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

Это должно вывести сгенерированные ресурсы на ваш экран. Затем скопируйте crd, который не был определен в предыдущем выпуске, в отдельный yaml-файл (то есть customResourceDefinition.yaml) и установите его вручную, используя kubectl:

kubectl apply -f ./customResourceDefinition.yaml

После этого вы можете попробовать команду helm upgrade снова. Возможно, команда обновления действительно строгая, и каждый ресурс должен существовать до того, как будут предприняты какие-либо действия.

Это всего лишь обходной путь и предположение. У меня не было этой проблемы раньше, и я вообще не использовал helm upgrade. Надеюсь, это поможет:)

...