首页 文章

将conf文件嵌入到掌舵图表中

提问于
浏览
1

我掌舵新人 . 我正在构建一个包含大量conf文件的splunk头盔图表 . 我目前在配置图中使用这样的东西..

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具有总统顺序>>因此可能在不同位置使用许多indices.conf文件 . 有没有人对如何最好地实现这个有任何想法?!??!

干杯 .

1 回答

  • 1

    如果文件的内容是静态的,那么您可以在图表中创建与模板目录(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中使用默认值 .

    如果您需要进一步的灵活性,您只需要 tpl . stable/keycloak chart让图表的用户创建自己的configmap和point it into the keycloak deployment via tpl . 但我认为你的情况可能最接近mysql .

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

相关问题