<.Chart.Name>: can't evaluate field Chart in type string
10,176
Please see related issue.
Based on this workaround, you can store .
in a variable, since inside of range
loop, .
refers to actual value of paths:
Also you may want to replace - path: /
with - 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 }}
Author by
RuBiCK
Technology lover, cloud enthusiastic and working as devops
Updated on June 26, 2022Comments
-
RuBiCK almost 2 years
When I deploy the following I get this error:
{{- 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:
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
is defined in _helpers.tpl:{{- define "marketplace.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} {{- end -}}
.Chart.Name
is an internal variable and the order of preference is explained here but even settingnameOverride
the error is the same.The strange thing is if I remove this template,
.Chart.Name
works fine within any other template so I think the problem is related to the scopes of therange
used.Values used:
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: []