我正在寻找一种合理的方法来转换字符串,例如
topkey.nestedkey.morenestedkey
到
topkey:
nestedkey:
morenestedkey:
values.yaml 中的输入如下:
custom:
- name: topkey.nestedkey.morenestedkey
value: val1
- name: topkey2.nestedkey2.morenestedkey2
value: val2
所以我会做这样的事情,但无法弄清楚转换。 (我知道在为其设置值之前我可能需要检查该键是否存在)
{{- range $item := .Values.custom }}
???
{{ $_ := set ?? ?? $item.value }}
{{- end }}
这背后的原因是
custom
数组是通过 GUI 创建的。
而不是公开 yaml 格式文件的每个选项,
我揭露最受欢迎的。但我希望界面允许添加额外的选项。
values.yaml
custom:
- name: topkey.nestedkey.morenestedkey
value: val1
- name: topkey2.nestedkey2.morenestedkey2
value: val2
模板/cm.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
name: test
data:
data: |-
{{- range $item := .Values.custom }}
{{- $x := 4 }}
{{- range ( split "." $item.name) }}
{{- . | nindent (int $x) }}:
{{- $x = (add 2 (int $x)) }}
{{- end }}
{{- $x = (add 2 (int $x)) }}
{{- $item.value | nindent (int $x) }}
{{- end }}
输出.yaml
---
# Source: test/templates/cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: test
data:
data: |-
topkey:
nestedkey:
morenestedkey:
val1
topkey2:
nestedkey2:
morenestedkey2:
val2
(ps:根据实际情况调整缩进量)