gpt4 book ai didi

kubernetes - 是什么导致 Helm 图表模板抛出 'unexpected EOF' ?

转载 作者:行者123 更新时间:2023-12-05 01:27:47 24 4
gpt4 key购买 nike

我正在尝试将入口添加到我的 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 }}

最佳答案

您的文件通常结构如下:

{{- if .Values.someCondition }}
...
{{- end }} # {{- if .Values.someCondition }}

但是,Go text/template 引擎在任何 YAML 解析发生之前运行。在这个例子中没有评论;有一个 if 语句、匹配的 end 和一个未终止的 if

text/template 语言有它自己的 {{/* comment */}} 语法,原则上你可以使用这个

{{- if .Values.someCondition }}
...
{{- end }}{{/* if .Values.someCondition */}}

除此之外,您显示的文件似乎具有正确数量的 {{ end }}

我自己可能会避免这种风格。通常这些条件 block 很短;如果有帮助,您可以将模板分解为多个 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 -}}

特别是对于标签,您可能会发现某些值会在所有对象中重复使用,因此在 _helpers.tpl 文件中包含一个模板以生成通用值会减少一些值重复性。

关于kubernetes - 是什么导致 Helm 图表模板抛出 'unexpected EOF' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69183331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com