Don*_*mmy 4 yaml go-templates kubernetes-helm
我有这个功能:
{{- define "myapp.getSubKey" -}}
{{- $map := .source }}
{{ "Before: " }}{{ $map }}
{{- range $key, $value := .keys }}
{{- if kindIs "int" $value }}
{{- $map := index $map (int $value) }}
{{ "After: " }}{{ $map }}
{{- end }}
{{- end }}
{{ $map }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
我用它来称呼它include "myapp.getSubKey" (dict "source" .Values.vars "keys" list(0))
这打印出:
Before: [map[name:MYSQL_ROOT_PASSWORD valueFrom:map[secretKeyRef:map[key:db-pass name:db-creds]]] map[name:MYSQL_ROOT_USER valueFrom:map[secretKeyRef:map[key:db-user name:db-creds]]]]
After: [map[name:MYSQL_ROOT_PASSWORD valueFrom:map[secretKeyRef:map[key:db-pass name:db-creds]]]
[map[name:MYSQL_ROOT_PASSWORD valueFrom:map[secretKeyRef:map[key:db-pass name:db-creds]]] map[name:MYSQL_ROOT_USER valueFrom:map[secretKeyRef:map[key:db-user name:db-creds]]]]
Run Code Online (Sandbox Code Playgroud)
因此,您可以看到它正确地向下导航并在语句$map
内进行更改if
,但是当它退出循环时,它会返回到循环之前的状态。
如何更改“全局”值?
尝试在内部使用运算符=
而不是赋值运算符。当您指定with时,范围仅限于。:=
if-block
$map
:=
if-block
{{- define "myapp.getSubKey" -}}
{{- $map := .source }}
{{ "Before: " }}{{ $map }}
{{- range $key, $value := .keys }}
{{- if kindIs "int" $value }}
{{- $map = index $map (int $value) }} // <------- here
{{ "After: " }}{{ $map }}
{{- end }}
{{- end }}
{{ $map }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
=
自 以来支持该运算符helm v2.13.0
。
归档时间: |
|
查看次数: |
2853 次 |
最近记录: |