Обновление диаграммы управления посланником завершается неудачно, поскольку ресурс уже существует в кластере и не был определен в предыдущем выпуске.

Обновление карты руля посла с

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 ответа

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

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

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

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

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

kubectl apply -f ./customResourceDefinition.yaml

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

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

Другие вопросы по тегам