Kubernetes 掌舵图-将数组设置为tls.hosts沿静态值

Kubernetes 掌舵图-将数组设置为tls.hosts沿静态值,kubernetes,kubernetes-helm,kubernetes-ingress,Kubernetes,Kubernetes Helm,Kubernetes Ingress,我试图实现的是在我的入口图表的主机字段中设置一个值数组,类似于: spec: tls: hosts: - domain1 - domain2 - domain3 我面临的问题是,我有一个默认域(domain1)和一个非固定长度的额外域数组(domain2,domain3) 我尝试的是沿着默认值遍历数组 - hosts: - {{.Values.domain}} {{- range $key, $val := .Values.regiona

我试图实现的是在我的入口图表的主机字段中设置一个值数组,类似于:

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

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

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

但我得到的错误类似于:
spec.tls[0]。主机:无效值:“domain1-domain2-domain3”:DNS-1123子域必须由小写字母数字字符“-”或“.”组成,并且必须以字母数字字符开头和结尾(例如“example.com”,用于验证的regex是“[a-z0-9]”([-a-z0-9]*[a-z0-9])?(\.[a-z0-9])([-a-z0-9])*[a-z0-9])?)*”

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

可以将字典中的信息提取到列表中。
可以添加到列表中。
处理格式化

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

YAML对空格非常敏感,与Helm/Go模板的交互可能有点棘手。看起来
范围内的项目上有两个额外的空格,因此您应该能够更改:

-主机:
-{{.Values.domain}
{{-range$key,$val:=.Values.regionalDomain}
{{/*与上面的-行对齐--减少两个缩进空间*/}
-{{$val}
{{-end}
模板并没有真正意识到YAML语法,并且非常严格地对待空格。大括号内带有连字符的
{-…
将删除模板一侧或另一侧的所有空格,包括换行符和空格,对此的推理可能涉及有意识地计算换行符。(默认域后面没有换行符,但在
范围
循环中的每个项之前及其
结束
之后都有一个换行符,这是正确的换行数。)

如果您遇到YAML解析错误,可以使用您的值集运行
helm template
,找到有问题的项,并确保生成的YAML看起来确实正确(没有缺少换行符,缩进对齐)