Helm chart-沿静态值将数组设置为tls.hosts



我试图实现的是在入口图中的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])?)*')

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

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

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

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看起来确实正确(没有缺少换行符,缩进对齐(可能会很有用。

相关内容

  • 没有找到相关文章

最新更新