templates - 将conf文件嵌入到helm图表中

标签 templates kubernetes splunk configmap kubernetes-helm

我是新 Helm 者。我正在构建一个包含大量conf文件的splunk helm图表。我目前在 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 文件。有谁对如何最好地实现这个有任何想法?!?!

干杯。

最佳答案

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

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

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

关于templates - 将conf文件嵌入到helm图表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51843992/

相关文章:

splunk - 如何从 Splunk 搜索结果中提取字段并对该字段的值进行统计

c++ - SFINAE - 如果更复杂的函数失败,则返回默认函数

c++ - 模板值特化

kubernetes - kubectl current-context - 是否可以保持多个当前上下文处于事件状态?

kubernetes - 在 kubeadm 集群上配置 PodSecurityPolicy

kubernetes - 您可以禁用在Charts/目录中扩展的依赖项吗

ssl - 来自 collectd 的 Write_http 插件的 curl 不起作用

模板参数中的 C++ 子类化

作为模板参数的 C++ 方法

perl - 从 perl 发送系统日志消息