путаница с рулем "* -delete" крючками. Не удалять предыдущие ресурсы при обновлении или установке команды - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь реализовать "helm.sh/hook": crd-install ловушку на CustomResourceDefinition объекте, конечно, таким образом

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    "helm.sh/hook": crd-install
    "helm.sh/hook-delete-policy": "before-hook-creation"
  name: certificates.certmanager.k8s.io

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

Error: customresourcedefinitions.apiextensions.k8s.io "certificates.certmanager.k8s.io" already exists

Я полагаю, что "before-hook-creation" политика удаления указывает, что Tiller должен удалить предыдущий хук до того, как будет запущен новый хук.

Но я не могу сделать удаление и воссоздание моих различных CustomResourceDefinition объектов

У меня есть моя диаграмма в процессе CI / CD, и идея состоит в том, что когда я выполняю операцию helm upgrade или даже новую операцию helm install с новым именем диаграммы в том же кластере, я надеваю не нужно принудительно удалять CRDs объекты вручную, чтобы он работал

Как я могу получить эту цель?

Я использовал "helm.sh/resource-policy": delete, а также крючки "helm.sh/hook-delete-policy": "hook-succeeded" и "helm.sh/hook-delete-policy": "hook-failed" все вместе, но я запутался в этом пункте

Я использую следующие версии helm

⟩ helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

Подобно анекдоту, у меня та же конфигурация YAML в секретном ресурсе, я имею в виду, что я создаю этот секретный ресурс, но как pre-install ловушка, но также использую "helm.sh/hook-delete-policy": "before-hook-creation" и когда я хочу обновить или установить новый экземпляр моего графика, это работает.

Я сделал такую ​​же установку CRDs, как и предустановочные хуки, и она работает

Почему он работает как pre-install hook, а не для crd-install hook? Могу ли я развернуть CRD-объекты kubernetes как pre-install хуки? Я имею в виду, что это не плохая практика или это рекомендуется?

За любую поддержку буду очень признателен

UPDATE

Даже имея ресурсы объекта CRD в виде ловушки pre-install, если я удаляю таблицу управления helm delete --purge ... и создаю ее снова, я получаю ту же ошибку

Error: object is being deleted: customresourcedefinitions.apiextensions.k8s.io "certificates.certmanager.k8s.io" already exists

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

Я имею в виду, что этот процесс работает только тогда, когда я собираюсь выполнить установку helm в первый раз и после обновления после нее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...