使用 Helm,我的印象是,default
如果未定义变量,则可能是后备方案。但是,Helm 似乎无法获取子对象哈希中的值:
type: {{ default "NodePort" .Values.fpm.service.type }}
Run Code Online (Sandbox Code Playgroud)
如果未定义.Values.fpm.service
或,则应使用 9000。service.type
但是,尝试对此进行模板化会引发 nil 指针错误:
<.Values.fpm.service.type>: nil pointer evaluating interface {}.type
Run Code Online (Sandbox Code Playgroud)
有没有办法简单地执行这种级别的变量测试?或者我是否要接受 if/else 测试?
这样做的目的是在文件中选择性地定义.fpm.service
(and [..].type
) values.yaml
。
(我正在构建一个 Helm 库图表来处理主图表的可选定义)
根据Helm 官方文档(使用默认函数),语法是不同的,你应该这样使用它:
type: {{ .Values.fpm.service.type | default "NodePort" | quote }}
Run Code Online (Sandbox Code Playgroud)
看起来确实没有什么好方法来阻止 Helm 尝试潜入不存在的物体。我将 if 条件移至单行,并且它有效:
type: {{ if .Values.fpm.service -}} {{ .default "NodePort" .Values.fpm.service.type | quote }} {{- else -}} "NodePort" {{- end }}
Run Code Online (Sandbox Code Playgroud)
这样,我fpm.service
在尝试检查之前先检查是否存在.type
。无论是否定义 和 ,.service
它都有效。.service.type
归档时间: |
|
查看次数: |
39358 次 |
最近记录: |