如何 return 来自 Kubernetes Helm 函数的复杂(dict)值?
How to return complex (dict) value from Kubernetes Helm function?
我想从 Helm 函数中 return 一个复杂的值(dict),这样我就可以在模板或其他函数中做进一步的处理。
我定义了这个函数:
{{- define "return-dict-function" -}}
key1: value1
key2: value2
{{- end -}}
并且我可以在我的模板中输出函数值:
{{ include "return-dict-function" . | nindent 2 }}
但是我怎样才能对数据做进一步的处理呢?
return复数值有几种解法,做进一步处理:
1) 函数 returns 纯 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 -}}
输出:
type: map[string]interface {}
simple-function-key1 : processed-value-value1
simple-function-key2 : processed-value-value2
2) 函数需要return dict
a) 序列化为 json
如果你有一个应该 returned 的字典,你可以用 toJson
序列化这个字典
{{- define "return-dict-function-json" -}}
{{- $result := dict "key1" "value1" "key2" "value2" }}
{{- $result | toJson -}}
{{- end -}}
稍后您将使用 fromJson
进行反序列化
{{ $dict := include "return-dict-function-json" . | fromJson }}
{{- range $key, $value := $dict }}
json-function-{{ $key }} : processed-value-{{ $value }}
{{- end -}}
b) 序列化为 yaml
你也可以用toYaml
序列化dict
{{- define "return-dict-function-yaml" -}}
{{- $result := dict "key1" "value1" "key2" "value2" }}
{{- $result | toYaml -}}
{{- end -}}
然后你需要用fromYaml
反序列化
{{ $dict := include "return-dict-function-yaml" . | fromYaml }}
{{- range $key, $value := $dict }}
yaml-function-{{ $key }} : processed-value-{{ $value }}
{{- end -}}
注释和进一步阅读
- 当然这也适用于嵌套值
- Advanced Helm Templating
- Helm Docs
我想从 Helm 函数中 return 一个复杂的值(dict),这样我就可以在模板或其他函数中做进一步的处理。
我定义了这个函数:
{{- define "return-dict-function" -}}
key1: value1
key2: value2
{{- end -}}
并且我可以在我的模板中输出函数值:
{{ include "return-dict-function" . | nindent 2 }}
但是我怎样才能对数据做进一步的处理呢?
return复数值有几种解法,做进一步处理:
1) 函数 returns 纯 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 -}}
输出:
type: map[string]interface {}
simple-function-key1 : processed-value-value1
simple-function-key2 : processed-value-value2
2) 函数需要return dict
a) 序列化为 json
如果你有一个应该 returned 的字典,你可以用 toJson
{{- define "return-dict-function-json" -}}
{{- $result := dict "key1" "value1" "key2" "value2" }}
{{- $result | toJson -}}
{{- end -}}
稍后您将使用 fromJson
{{ $dict := include "return-dict-function-json" . | fromJson }}
{{- range $key, $value := $dict }}
json-function-{{ $key }} : processed-value-{{ $value }}
{{- end -}}
b) 序列化为 yaml
你也可以用toYaml
{{- define "return-dict-function-yaml" -}}
{{- $result := dict "key1" "value1" "key2" "value2" }}
{{- $result | toYaml -}}
{{- end -}}
然后你需要用fromYaml
{{ $dict := include "return-dict-function-yaml" . | fromYaml }}
{{- range $key, $value := $dict }}
yaml-function-{{ $key }} : processed-value-{{ $value }}
{{- end -}}
注释和进一步阅读
- 当然这也适用于嵌套值
- Advanced Helm Templating
- Helm Docs