首页 > 解决方案 > Kubernetes Ingress 有两个命名空间,将 /api/ 重写为 development/api/

问题描述

我有两个命名空间的 Kubernetes 应用程序:项目生产和项目开发。它包含 React 前端、Express 后端和两个数据库。这是我的入口文件之一。第二个几乎一样。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  namespace: project-development
  labels:
    name: ingress
  annotations:
    kubernetes.io.ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - http:
        paths:
          - path: "/development/api/?(.*)"
            pathType: Prefix
            backend:
              service:
                name: express-clusterip
                port:
                  name: express-port
          - path: "/development/?(.*)"
            pathType: Prefix
            backend:
              service:
                name: react-clusterip
                port:
                  name: react-port

我需要我的前端在路径上可见:

问题之一(不是主要问题)是没有 / 的路径不起作用。第二个是我在上面两条路径上的前端都是可见的,但是我从它们发送的 axios 请求具有相同的路径:http://localhost/api/ 我想重写来自 react 的请求以通过 nginx 表达:

有没有办法做到这一点?

标签: httpnginxkubernetesurl-rewritingkubernetes-ingress

解决方案


你的正则表达式是错误的,你想要path: "/development/(api/.*)"第一个。


推荐阅读