【问题标题】:How to substitute Boolean value from values.yaml如何从 values.yaml 中替换布尔值
【发布时间】:2022-08-16 00:34:35
【问题描述】:
在我遵循的一些示例中,我看到,对于字符串值,我可以这样做:
{{- with .Values.cookieDomain }}
- --cookieDomain={{- toString . }}
{{- end }}
有了这个,如果我有,例如cookieDomain: .mydomain.com 在值.yaml,模板得到正确的值。
如何对布尔值执行相同/相似的操作?
例如,如果我有这个:proxyPass: true in值.yaml,我如何在模板中解释它,因为没有toBool 函数。
标签:
kubernetes-helm
go-templates
【解决方案1】:
在您的示例中,函数toString 实际上没有实际意义,如果cookieDoman 中包含的值已经是一个字符串,它将什么也不做。
在with .Values.cookieDoman 中您必须了解的是,上下文现在已从作为变量定义的根的. 更改为.Values.cookieDoman。
有点像在计算机中更改目录,如果我cd /tmp,然后./some_file 在/tmp/some_file 中查找文件。现在如果我cd /etc,同样的命令./some_file,现在将寻找一个文件/etc/some_file。
这控制变量范围。回想一下. 是对当前范围.所以.Values 告诉模板在当前范围内找到Values 对象。
来源:https://helm.sh/docs/chart_template_guide/control_structures/#modifying-scope-using-with
所以,在你的例子中,已经足够好了
flags:
{{- with .Values.cookieDomain }}
- --cookieDomain={{- . }}
{{- end }}
这将呈现在
flags:
- --cookieDomain=.mydomain.com
而且,所以,如果你有一个布尔值,它是完全相同的:
flags:
{{- with .Values.proxyPass }}
- --proxyPass={{- . }}
{{- end }}
会给:
flags:
- --proxyPass=true