首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes nginx入口多路径

Kubernetes nginx入口多路径
EN

Stack Overflow用户
提问于 2020-03-06 20:05:53
回答 1查看 5.5K关注 0票数 0

我有点麻烦,我想创建具有多条路径的入口

下面是我的/template/ingress.yaml

代码语言:javascript
复制
{{- if .Values.ingress.enabled -}}
{{- $ingressPath := .Values.ingress.path -}}
{{- $appName := .Values.appName -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
  name: {{ .Values.appName }}-ingress
  labels:
    app: {{ .Values.appName }}
    chart: {{ template "chart.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
{{- with .Values.ingress.annotations }}
  annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
  tls:
  {{- range .Values.ingress.tls }}
    - hosts:
      {{- range .hosts }}
        - {{ . }}
      {{- end }}
      secretName: {{ .secretName }}
  {{- end }}
{{- end }}
  rules:
  {{- range .Values.ingress.hosts }}
    - host: {{ . }}
      http:
        paths:
          - path: {{ $ingressPath }}
            backend:
              serviceName: {{ $appName }}-service
              servicePort: 80
  {{- end }}
{{- end }}

这是我的values.yaml文件

代码语言:javascript
复制
appName: vsemPrivet
replicaCount: 1
image:
  repository: kakoito.domen.kg
  tag: dev-56739-272faaf
  pullPolicy: Always
imagePullSecretName: regcred
nodeSelector:
  project: vazhni-project
service: vsem-privet
  name: 
  type: ClusterIP
  protocol: TCP
  targetPort: 8080

## Configure ingress resourse
## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: "nginx-prod-01"
    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"
  hosts:
    - mirtebe4elovek.com
  path: /letter
  hosts:
    - mirtebe4elovek.com
  path: /swagger-ui
  hosts:
    - mirtebe4elovek.com
  path: /webjars

  tls:
    - secretName: ssl-secret
      hosts:
        - qa-ibank.anthill.fortebank.com

因此,在我的场景中,我想创建3个不同的路径,但是当我执行helm install,然后kubectl描述我的操作时,我得到了以下结果

代码语言:javascript
复制
Name:             service-core-ingress
Namespace:        default
Address:          
Default backend:  default-http-backend:80 (<none>)
TLS:
  ssl-secret terminates mirtebe4elovek.com
Rules:
  Host                            Path  Backends
  ----                            ----  --------
  mirtebe4elovek.com  
                                  /webjars   my-service:80 (<none>)
Annotations:
  kubernetes.io/ingress.class:                         nginxnginx
  nginx.ingress.kubernetes.io/cors-allow-methods:      GET, POST, PUT, DELETE, OPTIONS, HEAD
  nginx.ingress.kubernetes.io/cors-max-age:            3600
  nginx.ingress.kubernetes.io/rewrite-target:          /
  nginx.ingress.kubernetes.io/cors-allow-credentials:  true
  nginx.ingress.kubernetes.io/cors-allow-headers:      *
  nginx.ingress.kubernetes.io/cors-allow-origin:       *
  nginx.ingress.kubernetes.io/enable-cors:             true
  nginx.ingress.kubernetes.io/from-to-www-redirect:    true
Events:                                                <none>

如你所见,我只有一个路径/webjars,但是另外两个在哪里? /letters和/swagger-ui,我已经在我的values.yaml文件中描述过了,我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2020-03-07 17:19:11

在Helm中,range运算符用于遍历集合。看起来这里需要在单个主机mirtebe4elovek.com上有多条路径

您可以按如下方式修改ingress.yaml

代码语言:javascript
复制
rules:

    - host: {{ .Values.ingress.host }}
      http:
        paths:
        {{- range .Values.ingress.paths }}
          - path: {{ . }}
            backend:
              serviceName: {{ $appName }}-service
              servicePort: 80
        {{- end }}

value.yaml文件如下所示:

代码语言:javascript
复制
ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: "nginx-prod-01"
    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"
  host: "mirtebe4elovek.com"
  paths:
    - "/letter"
    - "/swagger-ui"
    - "/webjars"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60563743

复制
相关文章

相似问题

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