如何通过 Helm Chart 将字符串列表(切片)呈现为 yaml 文件中的列表

kin*_*dot 1 go-templates kubernetes-helm

我有一个字符串数据列表或(切片),例如[string1, string2, string3]。我想在 yaml 文件中以列表方式呈现它

- string1
- string2
- string3
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我努力了

{{- range $val := $list }}
  - {{ $val }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)

但它将以下内容呈现为多行字符串

- |-
   - string1
   - string2
   - string2
Run Code Online (Sandbox Code Playgroud)

任何想法?先感谢您

z.x*_*z.x 5

您可以使用格式化字符串输出来解决该问题。

\n

例如。

\n

值.yaml

\n
arr:\n  - string1\n  - string2\n  - string3\n
Run Code Online (Sandbox Code Playgroud)\n

_helpers.tpl

\n
{{/*\nPrint string from list split by ,\n*/}}\n{{- define "print.list" -}}\n{{- range $idx, $val := $.Values.arr -}}\n{{- if $idx }}\n{{- print ", "  -}} \n{{- end -}}\n{{- $val -}}\n{{- end -}}\n{{- end -}}\n
Run Code Online (Sandbox Code Playgroud)\n

例如,您要渲染的模板comfigmap.yaml

\n
apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include "test.fullname" . }}\ndata:\n  test: [{{- include "print.list" .}}]\n
Run Code Online (Sandbox Code Playgroud)\n

输出

\n
piVersion: v1\nkind: ConfigMap\nmetadata:\n  name: test\ndata:\n  test: [string1, string2, string3]\n
Run Code Online (Sandbox Code Playgroud)\n
\n

---\xe2\x86\x93 2022-01-05 更新 \xe2\x86\x93---

\n

值.yaml

\n
arr:\n  - string1\n  - string2\n  - string3\n
Run Code Online (Sandbox Code Playgroud)\n

例如,您要渲染的模板comfigmap.yaml

\n
apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include "test.fullname" . }}\ndata:\n  test: |\n    {{- toYaml $.Values.arr | nindent 4 }}\n
Run Code Online (Sandbox Code Playgroud)\n

输出

\n
piVersion: v1\nkind: ConfigMap\nmetadata:\n  name: test\ndata:\n  test: |\n    - string1\n    - string2\n    - string3\n
Run Code Online (Sandbox Code Playgroud)\n
\n

没有管道

\n

helm --dry-run --debug template test .

\n

例如,您要渲染的模板comfigmap.yaml

\n
apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include "test.fullname" . }}\ndata:\n  test: \n    {{- toYaml $.Values.arr | nindent 4 }}\n
Run Code Online (Sandbox Code Playgroud)\n

输出

\n
piVersion: v1\nkind: ConfigMap\nmetadata:\n  name: test\ndata:\n  test: \n    - string1\n    - string2\n    - string3\n
Run Code Online (Sandbox Code Playgroud)\n
\n

range

\n
{{- range $i, $v := $.Values.arr }}\n- {{ $v }}\n{{- end }}\n
Run Code Online (Sandbox Code Playgroud)\n

输出

\n
- string1\n- string2\n- string3\n
Run Code Online (Sandbox Code Playgroud)\n