【问题标题】:Helm chart - Set array to tls.hosts along static valueHelm 图表 - 沿静态值将数组设置为 tls.hosts
【发布时间】:2020-11-20 09:11:00
【问题描述】:

我想要实现的是在我的入口图表中的 hosts 字段中设置一组值,类似于:

spec:
  tls:
    hosts:
      - domain1
      - domain2
      - domain3

我面临的问题是我有一个默认域 (domain1) 和一个非固定长度的额外域数组 (domain2, domain3)。

我尝试的是沿着默认值遍历数组

- hosts:
  - {{.Values.domain}}
  {{- range $key, $val := .Values.regionalDomain }}
    - {{ $val }}
  {{- end }}

但我收到类似于以下内容的错误:spec.tls[0].hosts: Invalid value: "domain1 - domain2 - domain3": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')

【问题讨论】:

    标签: kubernetes kubernetes-helm kubernetes-ingress


    【解决方案1】:

    我发现在可能的情况下使用模板中的数据比尝试格式化 yaml 更容易。

    values 可以将信息从字典中提取到列表中。
    prepend 可以添加到列表中。
    toJson 处理格式设置。

    hosts: {{ prepend (values .Values.regionalDomain) .Values.domain | toJson }}
    

    【讨论】:

      【解决方案2】:

      YAML 对空格非常敏感,与 Helm/Go 模板的交互可能有点棘手。看起来range 循环内的项目上有两个额外的空格,所以你应该可以更改:

      - hosts:
        - {{.Values.domain}}
        {{- range $key, $val := .Values.regionalDomain }}
        {{/* The - lines up with the above -- two fewer indent spaces */}}
        - {{ $val }}
        {{- end }}
      

      模板并不真正了解 YAML 语法,而是非常字面地处理空格。大括号内带有连字符的{{- ... 将删除模板一侧或另一侧的所有空格,包括换行符和空格,对此的推理可能涉及有意识地计算换行符。 (默认域后面没有换行符,但range 循环内的每个项目之前和end 之后都有一个换行符,这是正确的换行符数。)

      如果您遇到 YAML 解析错误,使用您的一组值运行 helm template 会很有用,找到有问题的项目,并确保生成的 YAML 实际上看起来正确(没有缺失换行,缩进对齐)。

      【讨论】:

        猜你喜欢
        • 2019-09-08
        • 2021-07-11
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        • 2021-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多