错误:升级失败:错误验证“”:错误验证数据:ValidationError(Ingress.spec.rules[0].http):缺少必填字段“路径”
Posted
技术标签:
【中文标题】错误:升级失败:错误验证“”:错误验证数据:ValidationError(Ingress.spec.rules[0].http):缺少必填字段“路径”【英文标题】:Error: UPGRADE FAILED: error validating "": error validating data: ValidationError(Ingress.spec.rules[0].http): missing required field "paths" 【发布时间】:2021-03-13 11:15:28 【问题描述】:我对使用 helm 图表非常陌生,不知道为什么在尝试安装 helm 图表时会出现此错误。我正在使用 --set 和 helm install 命令将主机名设置为 ingress.hosts[0].host。我不明白为什么它说缺少路径,因为“路径”已经存在。
ingress.yaml
- if .Values.ingress.enabled -
- $fullName := include "project.fullname" . -
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: $fullName
labels:
app.kubernetes.io/name: include "project.name" .
helm.sh/chart: include "project.chart" .
app.kubernetes.io/instance: .Release.Name
app.kubernetes.io/managed-by: .Release.Service
- with .Values.ingress.annotations
annotations:
- toYaml . | nindent 4
- end
spec:
- if .Values.ingress.tls
tls:
- range .Values.ingress.tls
- hosts:
- range .hosts
- . | quote
- end
secretName: .secretName
- end
- end
rules:
- range .Values.ingress.hosts
- host: .host | quote
http:
paths:
- range .paths
- path: .
backend:
serviceName: $fullName
servicePort: http
- end
- end
- end
values.yaml
...
...
...
ingress:
enabled: true
hostname: some_hostname
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "180"
nginx.ingress.kubernetes.io/proxy-send-timeout: "180"
nginx.ingress.kubernetes.io/proxy-read-timeout: "180"
hosts:
- host: some_hostname
paths: [/]
tls:
- secretName: some_secretname
hosts:
- some_hostname
resources:
...
...
...
安装 helm 的命令
helm upgrade --install $(PROJECT_NAME) --set ingress.hosts[0].host="$HOST_NAME --set ingress.tls[0].hosts="$HOST_NAME""
错误:
Error: UPGRADE FAILED: error validating "": error validating data: ValidationError(Ingress.spec.rules[0].http): missing required field "paths" in io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue
【问题讨论】:
您是否尝试过这样做:paths: - "/"
?应该就像你介绍的hosts.host
,而不是["/"]
@SaikatChakrabortty 是的,我也试过了,没有帮助。
【参考方案1】:
我遇到了同样的问题,由于某种原因,如果您在 --set
中定义主机,您还必须在集合中定义路径(即使它与 yaml 匹配)。像这样,
helm upgrade --install $(PROJECT_NAME) --set ingress.hosts[0].host=$HOST_NAME --set ingress.hosts[0].paths[0]=/
我还没有完成 tls,所以我不确定这是否有同样的问题。
【讨论】:
这也是我的解决方案。 documentation 不是很清楚,但它似乎覆盖了这些值,因此您最终不得不同时指定两者。对于 TLS,我必须同时指定密钥名称和主机。以上是关于错误:升级失败:错误验证“”:错误验证数据:ValidationError(Ingress.spec.rules[0].http):缺少必填字段“路径”的主要内容,如果未能解决你的问题,请参考以下文章
win10远程桌面显示发生身份验证错误(代码:0x800706be)是怎么回事啊