这很可能非常简单,但我现在两个小时都想不出来。我有以下 Consul Ingress,我想通过父图表对其进行参数化:
spec:
rules:
{{- range .Values.uiIngress.hosts }}
- host: {{ . }}
http:
paths:
- backend:
serviceName: {{ $serviceName }}
servicePort: {{ $servicePort }}
{{- end -}}
{{- if .Values.uiIngress.tls }}
tls:
{{ toYaml .Values.uiIngress.tls | indent 4 }}
{{- end -}}
{{- end }}
我想参数化上面的
spec.tls
。
在 Consul 的
values.yaml
文件中,我们有以下模板:
uiIngress:
enabled: false
annotations: {}
hosts: []
tls: {}
我最接近的参数化如下:
uiIngress:
tls:
- hosts:
- "some.domain.com"
secretName: "ssl-default"
当我这样做时,我收到此错误:
warning: cannot overwrite table with non table for tls (map[])
有人可以帮忙吗,我尝试了一百万件事。
如果 Consul 的
values.yaml
文件中定义的此图表的默认配置值具有以下结构:
uiIngress:
enabled: false
annotations: {}
hosts: []
tls: {}
当您执行
helm
命令时,您将发送如下值:
uiIngress:
tls:
- hosts:
- "some.domain.com"
secretName: "ssl-default"
发生错误
warning: cannot overwrite table with non table for tls (map[])
是因为tls
被定义为{}
中的字典values.yaml
并且您试图使用类型列表[]
(- hosts:
)为其设置值。
要修复警告,您可以将提供的 values.yaml
格式更改为:
uiIngress:
enabled: false
annotations: {}
tls:
- hosts: []
检查您的
helm
版本。我认为旧版本存在一些问题。这个不错:
$ helm version
Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
我完全按照你提到的步骤操作:
charts/consul
中)在创建的父图表中
values.yaml
:
consul:
uiIngress:
tls:
- hosts:
- "some.domain.com"
secretName: "ssl-default"
Helm 安装父图表