ara*_*ind 4 kubernetes kubernetes-helm
我想使用 application.yaml 文件作为配置映射传递。
所以我写了这个。
apiVersion: v1
kind: ConfigMap
metadata:
name: conf
data:
{{ (.Files.Glob "foo/*").AsConfig | indent 2 }}
Run Code Online (Sandbox Code Playgroud)
我的 application.yaml 存在于 foo 文件夹中,并包含一个服务名称,我需要通过 helm 插值动态填充它。
foo:
service:
name: {{.Release.Name}}-service
Run Code Online (Sandbox Code Playgroud)
当我干跑时,我得到了这个
apiVersion: v1
kind: ConfigMap
metadata:
name: conf
data:
application.yaml: "ei:\r\n service:\r\n name: {{.Release.Name}}-service"
Run Code Online (Sandbox Code Playgroud)
但我想name: {{.Release.Name}}-service包含实际的掌舵版本名称。
是否可以使用 helm 对外部文件进行模板化,如果是,那么该怎么做?我已经浏览了https://v2-14-0.helm.sh/docs/chart_template_guide/#accessing-files-inside-templates 我没有找到解决我的用例的东西。我也可以将内容复制到 config map yaml 并可以进行插值,但我不想这样做。我希望 application.yml 位于一个单独的文件中,这样处理配置更改就很简单了..
Helm包含一个tpl函数,可用于将任意字符串扩展为 Go 模板。在您的情况下,输出...AsConfig是一个字符串,您可以将其输入到模板引擎中。
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-conf
data:
{{ tpl (.Files.Glob "foo/*").AsConfig . | indent 2 }}
Run Code Online (Sandbox Code Playgroud)
完成此操作后,您可以从配置文件中调用任意模板代码。例如,有一个定义的模板来生成当前图表的名称前缀是很常见的,因此您的配置文件可以改为指定
foo:
service:
name: {{ template "mychart.name" . }}-service
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3664 次 |
| 最近记录: |