【问题标题】:Kubernetes/Helm ingress path with nginx and regex带有 nginx 和正则表达式的 Kubernetes/Helm 入口路径
【发布时间】:2018-01-08 13:52:16
【问题描述】:

我们的生态系统中有许多微服务,其中两个处理用户数据:

  • 用户服务->

    • POST /用户
    • GET /users/[[:alnum:]]+
  • 文件服务 ->

    • POST /users/[[:alnum:]]+/documents
    • GET /users/[[:alnum:]]+/documents/[[:alnum:]]+

因此我想在 Ingress 中定义它:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: {{.Release.Name}}
  annotations:
    kubernetes.io/ingress.class: "nginx"
    kubernetes.io/tls-acme: "true"
    ingress.kubernetes.io/enable-cors: "false"
    ingress.kubernetes.io/ssl-redirect: "true"
  labels:
    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
    app: "{{ template "fullname" . }}"
    heritage: "{{ .Release.Service }}"
    release: "{{ .Release.Name }}"
    tier: frontend
spec:
  tls:
  - secretName: {{ template "tls.fullname" . }}
    hosts:
    - "staging.ourhost.com"
  rules:
  - host: "staging.ourhost.com"
    http:
      paths:
    - path: "/users/[[:alnum:]]+"
      backend:
        serviceName: {{ .Values.api.services.user_service  | quote }}
        servicePort: 8080
    - path: "/users/[[:alnum:]]+/documents"
      backend:
        serviceName: {{ .Values.api.services.document_service | quote }}
        servicePort: 8888

这会导致在 ngix.conf 中设置以下内容:

location /users/[[:alnum:]]+ {
...
}

location /users/[[:alnum:]]+/documents{
...
}

即正则表达式未解析。

我尝试将其拆分为单独的入口并使用注释

ingress.kubernetes.io/rewrite-target: "/users/$1/documents"

但这导致 nginx.conf 中出现以下内容

location ~* ^/users/[[:alnum:]]+/documents/(?<baseuri>.*) {
            set $proxy_upstream_name "default-dev-document_service-8888";

  ...

    rewrite /users/[[:alnum:]]+/documents/(.*) /users/$1/documents/$1 break;
    proxy_pass http://default-dev-document_service-8888;

        }

问题(最后):

  • 为什么总是附加 $1?这对我来说似乎很奇怪
  • 有人知道使用正则表达式使路径工作的另一种方法吗?

任何建议都将不胜感激

【问题讨论】:

    标签: nginx kubernetes kubernetes-helm


    【解决方案1】:

    经过大量搜索,我试图做的似乎(还)不可能在 ingress 中进行。我和他们开了一个PR,我在等着看它是否会被合并。

    我尚未公开部署具有此更改的版本,但可以使用来自 k8s 的开发文档构建分支

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-23
      • 2019-04-11
      • 2013-02-12
      • 1970-01-01
      • 2021-08-31
      • 2022-11-22
      • 2022-01-25
      • 2021-01-15
      相关资源
      最近更新 更多