【问题标题】:Helm 3 - Ingress.yaml & Value.yaml - Rules mismatchHelm 3 - Ingress.yaml & Value.yaml - 规则不匹配
【发布时间】:2020-10-30 15:00:47
【问题描述】:

我对 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 对象:错误验证“”:错误验证数据:ValidationError(Ingress.spec.rules[0].http):io.k8s.api.networking.v1 中缺少必填字段“paths” .HTTPIngressRuleValue

有人可以建议我在 values.yaml 文件中做错了什么吗?

【问题讨论】:

    标签: charts yaml kubernetes-helm


    【解决方案1】:

    “ingress 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 }}
    
    

    因此以下 value.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:
          - /
    

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 2018-02-01
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      • 2018-10-24
      相关资源
      最近更新 更多