【问题标题】:Kubernetes Helm chart if condition inside an arrayKubernetes Helm 图表,如果条件在数组中
【发布时间】:2020-12-11 18:16:46
【问题描述】:

我正在尝试更新此图表:

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 也这样做。

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    在 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 文档的 sn-p:template - Go | range

    {{range pipeline}} T1 {{end}} pipeline 的值必须是 数组、切片、映射或通道。如果管道的值有 长度为零,不输出任何内容;否则,点设置为 数组、切片或映射的连续元素,并执行 T1。 如果值是一个映射并且键是基本类型,并且定义了 顺序,元素将按排序键顺序访问。

    {{range pipeline}} T1 {{else}} T0 {{end}} 管道的值 必须是数组、切片、映射或通道。如果值 管道长度为零,点不受影响,执行 T0; 否则,将 dot 设置为数组 slice 的连续元素, 或 map 并执行 T1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 2020-02-15
      • 2020-05-16
      • 2021-05-08
      • 1970-01-01
      • 2020-12-09
      相关资源
      最近更新 更多