我有一个 Helm 图表,其中在安装版本时设置了某个值,更改它会破坏底层软件。
在很多情况下,有人可能会不小心更改它,并且如果更改被应用 - 游戏结束 - 从备份中恢复几个小时。
如果上述值发生变化,我想对升级失败进行检查。
我考虑过使用
lookup
函数,但我的实验表明结果不可靠且不一致。另一个是 pre-upgrade
挂钩,它将评估更改并阻止图表的其余部分运行。
但这些看起来像是 hack。我想知道是否有更多的 Helm 定义方式,基本上是一个应该在整个发布过程中保留的常量值。
如果您想“硬编码”值,Helm 值可能不是您要找的值。
如果您接受输入变量的多个“允许”值,您可以在schema files中强制使用这些值,例如:
{
"$schema": "https://json-schema.org/draft-07/schema#",
"properties": {
"image": {
"description": "Container Image",
"properties": {
"version": {
"type": "string"
"oneOf": ["thatVersion"]
},
_variables.tpl
例如,和
{{- define "img_version" -}}
{{- print "thatVersion" -}}
{{- end -}}
include
:
thatKey: {{ include "img_version" . }}
或者最后的解决方案是改变“不使用硬编码值”的最佳实践规则,只是在模板中硬编码该值而不是通过
values.yaml
.
查看更多: