我要动态生成模板文件,这是我的情况:
{{- $v := (.Files.Get "values-deployment-nginx.yaml") | fromYaml }}
spec:
{{- range $key, $value := $v.containers }}
containers:
- name: {{ $value.name }}
image: {{ .Values.{{ $value.name }}-image }}:{{ .Values.{{ $value.name }}--tag }}
我想首先获取{{$ value.name}},它可能是类似“ nginx”的字符串,然后我想使用{{.Values.nginx-image}}来获取正确的图像值在值文件中。
有办法可以做到吗?非常感谢你!
我有许多动态生成的部署模板,但是只想将映像和标签公开到值文件,以便我们在安装图表时可以传递不同的映像信息。其他变量在(.Files.Get“ values-deployment-nginx.yaml”)中,就像这样(也是动态生成的)。因此,当生成模板时,我要匹配图像和值文件中的标签。
值文件如下:
deployment-nginx-imagerepo: nginx
deployment-nginx-imagetag: latest
values-deployment-nginx.yaml(由其他项目生成):
autoscale: []
containers:
- envs: []
imagerepository: nginx
imagetag: latest
itemid: n79fecd51_6716_fa65_5e64_aeed8ed6ab7e
name: nginx
resource:
maxcpu: ""
maxmemory: ""
mincpu: "0.5"
minmemory: 512m
volumemounts: []
name: details
replicas: 1
schedulpolicy: []
storages: []
type: deployment
答案 0 :(得分:1)
在Go text/template language中,我相信index
函数可以做到这一点。 (.Values
通常是一个地图,YAML映射和列表会转换为Go地图和切片。)(还要记住,sprig库中的几乎所有内容都可用。)
image: {{ index .Values (printf "%s-image" $value.name) }}:{{ index .Values (printf "%s-tag" $value.name) }}