【问题标题】:How to use --wait with post-install hook in helm?如何在 helm 中使用 --wait 和安装后挂钩?
【发布时间】:2022-04-06 16:32:42
【问题描述】:

我在安装后挂钩中使用安装脚本。 当我使用 --wait 选项运行 helm install 时,helm 等待所有 pod 都准备好,但 helm 不会启动安装后挂钩脚本。 然后,pod 还没有准备好(pod 正在等待安装脚本完成)。

我尝试使用预安装挂钩,但安装脚本需要运行其他服务...

PS:如果我不使用“--wait”,它可以正常工作,但是如果在 pod 启动期间出现错误,来自 gitlab 的 CI 不会失败。

有没有办法在 helm install --wait 期间运行安装后挂钩?

【问题讨论】:

    标签: kubernetes-helm


    【解决方案1】:

    我认为您无法使用 Helm post-install hook 解决您的问题,但您可以使用 vanilla Kubernetes jobshooks,即运行作业/挂钩以及仅依赖于 Kubernetes 的部署。

    首先要尝试的事情之一是从现有工作中删除 helm.sh/hook 注释。

      annotations:
        # This is what defines this resource as a hook. Without this line, the
        # job is considered part of the release.
        "helm.sh/hook": post-install
        "helm.sh/hook-weight": "-5"
        "helm.sh/hook-delete-policy": hook-succeeded
    

    Helm 可以等待它们完成,因为它们将由 Kubernetes 执行。

    【讨论】:

    • 不幸的是,如果我删除“安装”钩子,安装脚本也会在升级时启动...
    • 这里只是抛出两个想法:是否可以使用某种持久存储来存储脚本的状态 - 已安装/未安装?或者在执行之前检查脚本是否存在给定的资源/对象?
    • 在类似情况下,我将作业包装在 {{- if .Release.IsInstall -}} 中。这样,它仅在初始安装期间创建 - 而不是在后续升级时创建。见helm.sh/docs/chart_template_guide/builtin_objects
    【解决方案2】:

    您可以使用删除策略

    annotations:
        # This is what defines this resource as a hook. Without this line, the
        # job is considered part of the release.
        "helm.sh/hook": post-install
        "helm.sh/hook-weight": "-10"
        "helm.sh/hook-delete-policy": hook-succeeded , hook-failed , before-hook-creation
    

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 2021-07-19
      • 2020-10-11
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 2020-09-21
      • 2021-01-07
      • 1970-01-01
      相关资源
      最近更新 更多