Charts 舵3-入口yaml和值yaml-规则不匹配

Charts 舵3-入口yaml和值yaml-规则不匹配,charts,yaml,kubernetes-helm,Charts,Yaml,Kubernetes Helm,我对ingress.yaml有以下定义 {{- if .Values.ingress.enabled -}} {{- $fullName := include "onion.fullname" . -}} {{- $svcPort := .Values.service.port -}} {{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} apiVersion

我对ingress.yaml有以下定义

{{- if .Values.ingress.enabled -}}
{{- $fullName := include "onion.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1
{{- else -}}
apiVersion: networking.k8s.io/v1
{{- end }}
kind: Ingress
metadata:
  name: {{ $fullName }}
  labels:
    {{- include "onion.labels" . | nindent 4 }}
  {{- 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: {{ $svcPort }}
          {{- end }}
    {{- end }}
  {{- end }}

创建的value.yaml如下所示:

ingress:
  name: external
  enabled: true
  type: LoadBalancer
  annotations:
    kubernetes.io/ingress.class: "nginx-environment"
  hosts:
    - host: "onion.api.environment.cloud.google.com"
      http:
        paths:          
          - backend:
              serviceName: internal
              servicePort: 8081
            path: "/"
  tls:
    -  secretName: "onion.api.environment.cloud.google.com-tls"
       hosts:
       - "onion.api.environment.cloud.google.com"
       - "*.cloud.google.com"
我不断得到以下错误: 错误:无法从发布清单生成kubernetes对象:错误验证:错误验证数据:ValidationErrorIngress.spec.rules[0]。http:io.k8s.api.networking.v1.HTTPIngressRuleValue中缺少必需的字段路径


有人能告诉我values.yaml文件中有什么错误吗?

入口api:networking.k8s.io/v1的正确模板应该是:

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: {{ . }}
            pathType: Prefix
            backend:
              service:
                name: {{ $fullName }}
                port:
                  number: {{ $svcPort }}
          {{- end }}
    {{- end }}
  {{- end }}

因此,以下值.yaml将匹配

ingress:
  name: external
  enabled: true
  type: LoadBalancer
  #loadBalancerSourceRanges: ["0.0.0.0/0"]
  #externalPort: 443
  #internalPort: 80
  annotations:
    kubernetes.io/ingress.class: "nginx-environment"
    nginx.ingress.kubernetes.io/rewrite-target: "/"
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-methods: "GET, POST, PUT, DELETE, OPTIONS, HEAD"
    nginx.ingress.kubernetes.io/cors-allow-origin: "*"
    nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
    nginx.ingress.kubernetes.io/cors-allow-headers: "*"
    nginx.ingress.kubernetes.io/cors-max-age: "3600"
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
  tls: []
  #    - hosts:
  #        - "onion.api.environment.cloud.google.com"
  #        - "*.cloud.ajw-group.com"
  #      secretName: onion.api.environment.cloud.google.com-tls
  hosts:
    - host: onion.api.environment.cloud.google.com
      #http:
      paths:
      - /