Helm:无法用tls的非表覆盖表

时间:2018-08-07 09:59:24

标签: kubernetes kubernetes-helm

这很可能真的很简单,但是我两个小时都无法解决。我有以下要通过父图表进行参数化的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[])

有人可以帮忙吗,我尝试了一百万次。

1 个答案:

答案 0 :(得分:1)

检查您的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"}

我完全按照您提到的步骤进行操作:

  1. 将领事添加为子图表(在charts/consul中)
  2. 在父图表中创建values.yaml,其中:

    consul:
      uiIngress:
        tls:
        - hosts:
          - "some.domain.com"
        secretName: "ssl-default"
    
  3. 帮助安装父图表