将conf文件嵌入头盔图表

时间:2018-08-14 14:38:03

标签: templates kubernetes splunk configmap kubernetes-helm

我是新手。我用大量的conf文件构建了一个混乱的头盔图表。我目前在configmap中使用类似的东西。

    apiVersion: v1
kind: ConfigMap
metadata:
  name: splunk-master-configmap
data:
  indexes.conf: |
    # global settings
    # Inheritable by all indexes: no hot/warm bucket can exceed 1 TB.
    # Individual indexes can override this setting.
    homePath.maxDataSizeMB = 1000000

,但我希望将conf文件放在单独的文件夹中,例如configs / helloworld.conf并出现在“ tpl”中,但是正在努力了解如何实现它。 -任何人都可以建议最佳做法。附带说明一下,splunk的出现顺序为>>,因此可能在不同位置使用了许多index.conf文件。有没有人对如何最好地实现这一点有任何想法?!??!

干杯。

1 个答案:

答案 0 :(得分:3)

如果文件的内容是静态的,则可以在图表中创建与模板目录(not inside it)相同级别的文件目录,并像这样引用它们:

kind: ConfigMap
metadata:
  name: splunk-master-configmap
data:
  {{ (.Files.Glob "files/indexes.conf").AsConfig | indent 2 }}
  {{ (.Files.Glob "files/otherfile.conf").AsConfig | indent 2 }}
# ... and so on

如果您希望能够引用文件内变量的值,以便从values.yaml中控制内容,则可以在其中进行分解。如果要单独显示每个值,则有一个example in the helm documentation using range。但我认为what the stable/mysql chart does是您的最佳选择。它具有一个将值作为字符串的ConfigMap:

{{- if .Values.configurationFiles }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "mysql.fullname" . }}-configuration
data:
{{- range $key, $val := .Values.configurationFiles }}
  {{ $key }}: |-
{{ $val | indent 4}}
{{- end }}
{{- end -}}

values.yaml允许图表用户设置和覆盖文件及其内容:

# Custom mysql configuration files used to override default mysql settings
configurationFiles:
#  mysql.cnf: |-
#    [mysqld]
#    skip-name-resolve
#    ssl-ca=/ssl/ca.pem
#    ssl-cert=/ssl/server-cert.pem
#    ssl-key=/ssl/server-key.pem

它将内容注释掉,并留给图表用户设置,但您可以在values.yaml中设置默认值。

仅在需要更大灵活性时才需要tplstable/keycloak chart使图表的用户可以创建自己的configmap和point it into the keycloak deployment via tpl。但我认为您的情况可能与mysql最接近。

编辑:tpl函数还可用于获取文件中加载的文件的内容。获取并有效地使该内容成为模板的一部分-如果您对此感兴趣,请参见How do I load multiple templated config files into a helm chart?