Helm:如何将带有点符号的字符串转换为字典

问题描述 投票:0回答:1

我正在寻找一种合理的方法来转换字符串,例如

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 格式文件的每个选项, 我揭露最受欢迎的。但我希望界面允许添加额外的选项。

kubernetes-helm
1个回答
1
投票

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:根据实际情况调整缩进量)

© www.soinside.com 2019 - 2024. All rights reserved.