<.Chart.Name>: невозможно оценить диаграмму поля в строке типа - PullRequest
0 голосов
/ 14 января 2019

При развертывании следующего я получаю эту ошибку:

{{- if .Values.front.ingress.enabled -}}
{{- $fullName := include "marketplace.fullname" . -}}
{{- $ingressPaths := .Values.front.ingress.paths -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: {{ $fullName }}-{{ .Values.environment }}-front
  labels:
    app.kubernetes.io/name: {{ include "marketplace.name" . }}-{{ .Values.front.name }}
    helm.sh/chart: {{ include "marketplace.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}-{{ .Values.front.name }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
  {{- with .Values.front.ingress.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
  {{- end }}
spec:
{{- if .Values.front.ingress.tls }}
  tls:
  {{- range .Values.front.ingress.tls }}
    - hosts:
      {{- range .hosts }}
        - {{ . | quote }}
      {{- end }}
      secretName: {{ .secretName }}
  {{- end }}
{{- end }}
  rules:
  {{- range .Values.front.ingress.hosts }}
    - host: {{ . | quote }}
      http:
        paths:
    {{- range $ingressPaths }}
          - path: /
            backend:
              serviceName: {{ include "marketplace.name" . }}-{{ $.Values.front.name }}
              servicePort: 3000
    {{- end }}
  {{- end }}
{{- end }}

Ошибка:

  Error: UPGRADE FAILED: render error in "marketplace/templates/front-ingress.yaml": template: marketplace/templates/front-ingress.yaml:36:30: executing "marketplace/templates/front-ingress.yaml" at <include "marketplace...>: error calling include: template: marketplace/templates/_helpers.tpl:6:18: executing "marketplace.name" at <.Chart.Name>: can't evaluate field Chart in type string

marketplace.name определено в _helpers.tpl:

{{- define "marketplace.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}

.Chart.Name является внутренней переменной, и здесь объясняется порядок предпочтений здесь , но даже при установке nameOverride ошибка такая же.

Странная вещь, если я удалю этот шаблон, .Chart.Name прекрасно работает в любом другом шаблоне, поэтому я думаю, что проблема связана с областями применения range.

Используемые значения:

front:
  ingress:
    enabled: true
    annotations:
      kubernetes.io/ingress.class: nginx-int
      nginx.ingress.kubernetes.io/rewrite-target: /
      nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
    paths:
      - /
    hosts:
      - myhost.mydomain.cloud
    tls: []

1 Ответ

0 голосов
/ 14 января 2019

Пожалуйста, смотрите связанный вопрос .

На основе этого обходного пути вы можете хранить . в переменной, поскольку внутри цикла range, . относится к фактическому значению paths:

Также вы можете заменить - path: / на - path: {{ . }}

{{- if .Values.front.ingress.enabled -}}
{{- $fullName := include "bchart.fullname" . -}}
{{- $ingressPaths := .Values.front.ingress.paths -}}
{{- $dot := . }}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
...
...
    {{- range $ingressPaths }}
          - path: {{ . }}
            backend:
              serviceName: {{ include "bchart.name" $dot }}-{{ $.Values.front.name }}
              servicePort: 3000
    {{- end }}
...