Zer*_*ind 6 go-templates kubernetes kubernetes-helm
我正在尝试将入口添加到我的 nginx 容器中。
以下入口模板给我“解析错误(<>/ingress.yaml:71:意外的 EOF)”。我尝试标记可能丢失的结束语句,但即使在文件末尾添加任意结束也无法修复它。我不知道是什么原因导致这个 EOF。
所以问题是一般性的:是什么导致文件中出现“意外的 EOF”?
{{- if .Values.web.ingress.enabled }}
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: {{ .Release.Name }}-proxy-ingress
labels:
tier: intelowl
component: proxy
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.labels }}
{{ toYaml . | indent 4 }}
{{- end }} # {{- with .Values.labels }}
{{- if .Values.web.ingress.annotations }}
annotations:
{{- with .Values.web.ingress.annotations }}
{{ toYaml . | indent 4 }}
{{- end }} # {{- with .Values.web.ingress.annotations }}
{{- end }} # {{- if .Values.web.ingress.annotations }}
spec:
{{- if .Values.web.ingress.tls.enabled }}
tls:
- hosts:
- {{ .Values.web.ingress.host }}
secretName: {{ .Values.web.ingress.tls.secretName }}
{{- end }} # {{- if .Values.web.ingress.tls.enabled }}
rules:
- http:
paths:
{{- range .Values.web.ingress.precedingPaths }}
- path: {{ .path }}
backend:
service:
name: {{ .serviceName }}
port:
number: {{ .servicePort }}
{{- end }} # {{- range .Values.web.ingress.precedingPaths }}
- backend:
service:
name: {{ .Release.Name }}-proxy
port:
number: {{ ternary 443 80 .Values.web.ingress.tls.enabled }}
{{- if .Values.web.ingress.path }}
path: {{ .Values.web.ingress.path }}
{{- end }} # {{- if .Values.web.ingress.path }}
{{- range .Values.web.ingress.succeedingPaths }}
- path: {{ .path }}
backend:
service:
name: {{ .serviceName }}
port:
number: {{ .servicePort }}
{{- end }} # {{- range .Values.web.ingress.succeedingPaths }}
{{- if .Values.web.ingress.host }}
host: {{ .Values.web.ingress.host }}
{{- end }} # {{- if .Values.web.ingress.host }}
{{- end }} # {{- if .Values.web.ingress.enabled }}
Run Code Online (Sandbox Code Playgroud)
Dav*_*aze 10
您的文件通常结构如下:
{{- if .Values.someCondition }}
...
{{- end }} # {{- if .Values.someCondition }}
Run Code Online (Sandbox Code Playgroud)
但是,Gotext/template引擎在任何 YAML 解析发生之前运行。本例中没有注释;有一个if语句、匹配的end和一个未终止的if。
该text/template语言有自己的{{/* comment */}}语法,原则上你可以使用它
{{- if .Values.someCondition }}
...
{{- end }}{{/* if .Values.someCondition */}}
Run Code Online (Sandbox Code Playgroud)
除此之外,您显示的文件似乎具有正确的{{ end }}s 数量。
我自己可能会避免这种风格。通常这些条件块相当短;如果有帮助的话,您可以将模板分解为多个define命名模板。
metadata:
labels:
tier: intelowl
et: cetera
{{- include "more-labels" . | indent 4 }}
{{- include "ingress-annotations" . | indent 2 }}
{{- define "more-labels" -}}
{{ with .Values.labels }}{{ toYaml . }}{{ end }}
{{- end -}}
{{- define "ingress-annotations" -}}
{{- with .Values.web.ingress.annotations }}
annotations:
{{ toYaml . | indent 2 }}
{{- end -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)
特别是对于标签,您可能会发现某些值将在所有对象中重用,因此在文件中包含模板_helpers.tpl来生成通用值将减少一些重复性。
| 归档时间: |
|
| 查看次数: |
18807 次 |
| 最近记录: |