我正在寻找一个解决方案,用逗号分隔列表转换我的values.yaml中的列表。
values.yaml
app:
logfiletoexclude:
- "/var/log/containers/kube*"
- "/var/log/containers/tiller*"
_helpers.tpl:
{{- define "pathtoexclude" -}}
{{- join "," .Values.app.logfiletoexclude }}
{{- end -}}
configmap:
<source>
@type tail
path /var/log/containers/*.log
exclude_path [{{ template "pathtoexclude" . }}]
...
...
</source>
问题是我的结果中缺少引号
exclude_path [/var/log/containers/kube*,/var/log/containers/tiller*]
如何修复它才能拥有:
exclude_path ["/var/log/containers/kube*","/var/log/containers/tiller*"]
我尝试过:
{{- join "," .Values.app.logfiletoexclude | quote}}
但是这给了我:
exclude_path ["/var/log/containers/kube*,/var/log/containers/tiller*"]
由于
答案 0 :(得分:1)
双引号应以.Values.app.logfiletoexclude
值转义。
values.yaml
是:
app:
logfiletoexclude:
- '"/var/log/containers/kube*"'
- '"/var/log/containers/tiller*"'
_helpers.tpl
是:
{{- define "pathtoexclude" -}}
{{- join "," .Values.app.logfiletoexclude }}
{{- end -}}
最后我们有:
exclude_path ["/var/log/containers/kube*","/var/log/containers/tiller*"]
答案 1 :(得分:0)
或者,以下内容也对我有用,而不必用引号引起来:
"{{- join "\",\"" .Values.myArrayField }}"
当然,这仅适用于非空数组,并且为空数组生成一个空的带引号的值。有人知道一个简单的守卫可以在这里整合吗?
答案 2 :(得分:0)
Fluentd 允许在其配置 https://docs.fluentd.org/configuration/config-file#supported-data-types-for-values 中为数组使用所谓的“速记语法”,这是一个字符串,其中包含逗号来分隔值,例如“value1,value2,value3”。
因此,如果您可以假设您的值中没有逗号,那么您就可以避免使用 '"..."'
进行双引号的麻烦,只需执行以下操作:
在您的 values.yaml
中:
app:
logfiletoexclude:
- /var/log/containers/kube*
- /var/log/containers/tiller*
在您的 _helpers.tpl
中:
{{- define "pathtoexclude" -}}
{{- join "," .Values.app.logfiletoexclude }}
{{- end -}}
在您的配置图中:
<source>
@type tail
path /var/log/containers/*.log
exclude_path {{ template "pathtoexclude" . }}
...
</source>