0

在这里掌舵新手。我正在尝试遍历文件并使用其内容创建一个配置映射。文件内容需要在循环内定义变量。下面是我正在使用的配置图。

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "proj.name" . }}
  labels:
    app.kubernetes.io/name: {{ include "proj.name" . }}
    app.kubernetes.io/version: {{ include "proj.version" . }}
data:
  {{- range $path, $_ := .Files.Glob "myconfig/*.txt" -}}
  {{ $path | base | nindent 2 }}: |
  {{- tpl ($.Files.Get $path) $ | nindent 4 }}
  {{- end -}}

myconfig/name.txt 的内容

i am able to access this -> {{ .Values.somekey }}
But not this -> {{ $path }}

我得到错误:未定义的变量“$path” 任何帮助将不胜感激。谢谢你。

4

1 回答 1

2

$path变量是一个局部变量。它不能从其他模板函数或tpl扩展中访问。特殊的“根上下文”变量$也不包括局部变量。

在这种情况下,您可以为tpl函数定义自己的上下文:

{{- $context := dict "somekey" .Values.somekey "path" $path }}
{{- tpl ($.Files.Get $path) $context | nindent 4 }}

然后在文件中,您将引用其中提供的键dict(但不是该显式上下文之外的其他内容)

i am able to access this -> {{ .somekey }}
and also this -> {{ .path }}
but i wouldn't be able to reference .Values.anything
于 2021-10-15T11:05:20.713 回答