helm从值文件加入列表

时间:2018-03-14 12:46:09

标签: kubernetes-helm

我正在寻找一个解决方案,用逗号分隔列表转换我的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*"] 

由于

3 个答案:

答案 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>