Kubernetes/Helm入口通道,带nginx和regex

Kubernetes/Helm入口通道,带nginx和regex,nginx,kubernetes,kubernetes-helm,Nginx,Kubernetes,Kubernetes Helm,我们的生态系统中有许多微型服务,其中两个处理用户数据: 用户服务-> 帖子/用户 GET/users/[:alnum:]+ 文件服务-> POST/users/[:alnum:][]+/documents GET/users/[:alnum:][]+/documents/[:alnum:][]+ 因此,我想在入口中定义这一点: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: {{.Release.Name}

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

  • 用户服务->

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

    • POST/users/[:alnum:][]+/documents
    • GET/users/[:alnum:][]+/documents/[:alnum:][]+
因此,我想在入口中定义这一点:

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{
...
}
i、 e.未解析正则表达式

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

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;

        }
location~*^/users/[:alnum:]+/documents/(?*){
设置$proxy_上游_name“default-dev-document_service-8888”;
...
重写/users/[:alnum:][]+/documents/(.*)/users/$1/documents/$1 break;
代理通行证http://default-dev-document_service-8888;
}
问题(最后):

  • 为什么总是附加1美元?这对我来说似乎很奇怪
  • 有人知道另一种让路径与regex一起工作的方法吗

任何建议都将受到极大的赞赏

经过大量的搜索,似乎我试图做的事情在ingress中是不可能的。我和他们开了一家公司,我在等着看它是否会被合并

我还没有公开部署一个具有此更改的版本,但是可以使用k8s中的dev文档构建分支