Я пытаюсь реализовать "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 в первый раз и после обновления после нее