如何在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
相关产品推荐
相关产品推荐

