将conf文件嵌入舵图

Nic*_*eed 2 templates splunk kubernetes kubernetes-helm configmap

我是掌舵人。我用大量的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
Run Code Online (Sandbox Code Playgroud)

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

干杯。

Rya*_*son 6

如果文件的内容是静态的,则可以在图表中与模板目录位于同一级别(不在其内部)创建文件目录,并按如下方式引用它们:

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
Run Code Online (Sandbox Code Playgroud)

如果您希望能够引用文件中变量的值,以便从values.yaml中控制内容,则可以解决此问题。如果要单独公开每个值,则在Helm文档中有一个使用range示例。但我认为,stable / mysql图表的功能非常适合您或您的情况。它具有一个将值作为字符串的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 -}}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

tpl在需要进一步灵活性时才需要。在稳定/ keycloak图表让图表的用户创建自己的configmap,并通过第三方物流将其指向到keycloak部署。但我认为您的情况可能与mysql最接近。

编辑:tpl函数也可以用来获取用Files加载的文件的内容。获取并有效地使该内容成为模板的一部分-请参阅如何将多个模板化的配置文件加载到头盔图表中?如果您对此感兴趣