Kubernetes进入到不同服务的根路径

Kubernetes进入到不同服务的根路径,kubernetes,nginx-ingress,Kubernetes,Nginx Ingress,我想将主机的某些路径路由到不同的后端 假设我有2个后端服务: 后端一 后端2 所有请求最初都被路由到后端一个,如下例所示 rules: - host: example.com http: paths: - path: / backend: serviceName: backend-one servicePort: 3000 现在,我有了后端两个作为新服务,

我想将主机的某些路径路由到不同的后端

假设我有2个后端服务:

  • 后端一
  • 后端2
所有请求最初都被路由到
后端一个
,如下例所示

rules:
    - host: example.com
      http:
        paths:
          - path: /
            backend:
              serviceName: backend-one
              servicePort: 3000
现在,我有了
后端两个
作为新服务,它应该为特定路径提供内容,但最重要的是
/
(根)页面

因此,我的目标如下:

  • 路径
    /
    /abc
    /xyz
    /12345
    ,由===>
    后端两个
    (新服务)提供服务
  • backend one
    旧服务提供的所有其他服务
实现这一目标的最简单方法是什么?

根据Kubernetes:

在Kubernetes 1.18中,对入口有两个重要的补充: 新建
路径类型
字段和新的
入口类
资源。
路径类型
字段允许指定应如何匹配路径。除了 默认的
ImplementationSpecific
类型,有新的
Exact
前缀
路径类型

您可以使用Kubernetes 1.18+实现您想要的功能。使用以下配置:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      # Proxy to backend-two when the request is EXACT the root path
      - path: /
        pathType: Exact
        backend:
          serviceName: backend-two
          servicePort: 3000
      # Proxy specic paths (including subpaths) to backend-two
      - path: /abc
        pathType: Prefix
        backend:
          serviceName: backend-two
          servicePort: 3000
      - path: /xyz
        pathType: Prefix
        backend:
          serviceName: backend-two
          servicePort: 3000
      - path: /12345
        pathType: Prefix
        backend:
          serviceName: backend-two
          servicePort: 3000
      # If no rules above match, Proxy to backend-one
      - path: /
        pathType: Prefix
        backend:
          serviceName: backend-one
          servicePort: 3000

请记住,如果您有多条路径需要处理,您还可以使用来改进入口配置。

这太棒了,正是我所需要的!谢谢爱德华多!嗨@AndreiGaspar很高兴它成功了。请注意,在这里说“谢谢”的首选方式是投票选出好的问题和有用的答案(一旦你有足够的声誉这么做),并接受对你提出的任何问题最有用的答案(这也会给你的声誉带来一点提升)。请查看页面,然后