Mat*_*s M 3 kubernetes kubernetes-helm
我想从 Helm 函数返回一个复数 (dict),以便我可以在模板或其他函数中进行进一步处理。
我定义了这个函数:
{{- define "return-dict-function" -}}
key1: value1
key2: value2
{{- end -}}
Run Code Online (Sandbox Code Playgroud)
我可以在模板中输出函数值:
{{ include "return-dict-function" . | nindent 2 }}
Run Code Online (Sandbox Code Playgroud)
但如何对数据进行进一步处理呢?
有几种解决方案可以返回复数值并进行进一步处理:
1)函数返回纯yaml
return-dict-function从问题中获取示例函数。如果你使用fromYaml你会得到dict:
{{ $dict := include "return-dict-function" . | fromYaml }}
type: {{ $dict | typeOf }}
{{- range $key, $value := $dict }}
simple-function-{{ $key }} : processed-value-{{ $value }}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)
输出:
type: map[string]interface {}
simple-function-key1 : processed-value-value1
simple-function-key2 : processed-value-value2
Run Code Online (Sandbox Code Playgroud)
2)函数需要返回dict
a) 序列化为json
如果您有一个应该返回的字典,您可以使用以下命令序列化该字典toJson
{{- define "return-dict-function-json" -}}
{{- $result := dict "key1" "value1" "key2" "value2" }}
{{- $result | toJson -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)
稍后你将反序列化fromJson
{{ $dict := include "return-dict-function-json" . | fromJson }}
{{- range $key, $value := $dict }}
json-function-{{ $key }} : processed-value-{{ $value }}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)
b) 序列化为 yaml
您还可以使用以下命令序列化字典toYaml
{{- define "return-dict-function-yaml" -}}
{{- $result := dict "key1" "value1" "key2" "value2" }}
{{- $result | toYaml -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)
然后你需要反序列化fromYaml
{{ $dict := include "return-dict-function-yaml" . | fromYaml }}
{{- range $key, $value := $dict }}
yaml-function-{{ $key }} : processed-value-{{ $value }}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)
注释和进一步阅读
| 归档时间: |
|
| 查看次数: |
2790 次 |
| 最近记录: |