kubernetes - Kubernetes Helm 图表,如果条件在数组中
问题描述
我正在尝试更新此图表:
k8s.v1.cni.cncf.io/networks: '[
{ "name" : "ext", "ips": {{ .Values.global.extoamlancas0 | quote }}, "interface": "e1"},
{ "name" : "ext-app", "ips": {{ .Values.global.extapplancas0 | quote }}, "interface": "e3"},
{ "name" : "int-", "ips": {{ .Values.global.intoamlancas0 | quote }}, "interface": "e2"}
]'
Here
if {{- if Values.a }} then I want "ips" to be in an array i.e
{ "name" : "ext-", "ips": [ {{ .Values.global.extoamlancas0 | quote }} ], "interface": "e1"}
else
{ "name" : "ext", "ips": {{ .Values.global.extoamlancas0 | quote }}, "interface": "e1"}
我也希望对所有其他 2 个 ip 执行此操作。
解决方案
在 values.yaml 文件中,您需要指定一个数组 ips,如下所示:
ips:
- address: 192.168.1.1
name: no1
- address: 192.168.1.2
name: no2
在模板文件中,您可以像这样循环:
{{- range .Values.ips }}
- name: {{ .name }}
address: {{ .address }}
{{- end }}
下面是来自 golang 文档的片段:template - Go | 范围
{{range pipeline}} T1 {{end}} pipeline 的值必须是数组、切片、映射或通道。如果管道的值长度为零,则不输出任何内容;否则,将 dot 设置为数组、切片或映射的连续元素,并执行 T1。如果该值是一个映射并且键是具有定义顺序的基本类型,则将按排序键顺序访问元素。
{{range pipeline}} T1 {{else}} T0 {{end}} pipeline 的值必须是数组、切片、映射或通道。如果管道的值长度为零,点不受影响,执行T0;否则,将 dot 设置为数组、切片或映射的连续元素,并执行 T1。
推荐阅读
- angular - 从外部 js 文件更改离子输入的值
- comments - 通过 RapidXML 在 XML 文件中获取注释
- matlab - MATLAB:大文本文件到矩阵的转换
- c - 为什么不能将静态结构指针初始化为变量的地址
- java - Eclipse 氧气 4.7.3a 上的 Java swing?
- android - base64 解码字符串并编码所有丢失的特殊字符
- python - imshow上的Python OpenCV“当前线程不是对象的线程”
- apache-spark - 使用 Value Spark Java API 连接数据集中的列
- google-analytics - 特定域的自然流量
- python - 过滤熊猫中的对象列