You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Helm Chart模板中为shutdownDelay设置50秒默认值

解决Helm模板preStop钩子shutdownDelay默认值问题

直接用下面修正后的模板代码,完美实现你要的逻辑:

lifecycle:
          {{- if .Values.lifecycleHooks.preStop }}
            preStop:
{{ toYaml .Values.lifecycleHooks.preStop | indent 14 }}
          {{- else }}
            preStop:
              exec:
                command:
                  - sleep
                  - "{{ default 50 .Values.shutdownDelay | int }}"
          {{- end }}

逻辑说明

  • 优先级最高的是自定义preStop钩子:如果你的values.yaml里配置了lifecycleHooks.preStop,直接用你定义的逻辑,完全不触发默认的sleep逻辑
  • 没有自定义钩子时,自动生成sleep的preStop命令:
    • 要是values.yaml里没写shutdownDelay,自动用50秒作为默认值
    • 要是写了具体的shutdownDelay数值,就用你指定的那个值
  • | int是确保最终输出的是整数格式,避免出现字符串类型的数值引发的问题

原代码的问题

你原来的else if gt (int .Values.shutdownDelay) 0逻辑有坑:如果没配置shutdownDelay,int .Values.shutdownDelay会被转成0,这时候gt 0不成立,直接导致preStop钩子消失。换成default函数就能一次性搞定默认值,还不会漏情况。

内容的提问来源于stack exchange,提问作者cloudbud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:06:19