首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Helm 3- Ingress.yaml和Value.yaml -规则不匹配

问Helm 3- Ingress.yaml和Value.yaml -规则不匹配
EN

Stack Overflow用户
提问于 2020-10-30 13:44:30
回答 1查看 2.1K关注 0票数 1

我对ingress.yaml有以下定义

代码语言:javascript
复制
{{- 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如下:

代码语言:javascript
复制
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"

我一直收到以下错误: error: unable to build kubernetes objects from release manifest: error validating "":error validating : ValidationError(Ingress.spec.rules.http):在io.k8s.api.networking.v1.HTTPIngressRuleValue中缺少必填字段"paths“

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

EN

回答 1

Stack Overflow用户

发布于 2020-10-30 15:00:47

"ingress api: networking.k8s.io/v1“的正确模板应该是:

代码语言:javascript
复制
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将匹配

代码语言:javascript
复制
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:
      - /
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64603275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档