如何解决Kubernetes入口ROOT通向不同服务的路径
我想将主机的某些路径路由到另一个后端。
假设我有2个后端服务:
- 后端一
- 后端两个
最初,所有请求都被路由到backend-one
,就像下面的示例一样。
rules:
- host: example.com
http:
paths:
- path: /
backend:
serviceName: backend-one
servicePort: 3000
现在,我有了backend-two
作为新服务,该服务应该为特定路径提供内容,但最重要的是,也要提供/
(根)页面。
所以,我的目标是:
- 要由====>
/
(新服务)提供服务的路径/abc
,/xyz
,/12345
,backend-two
。 -
backend-one
旧服务将为您提供所有其他服务。
实现这一目标的最简单方法是什么?
解决方法
根据Kubernetes CHANGELOG-1.18.md:
在Kubernetes 1.18中,Ingress有两个重要的补充:A 新的
pathType
字段和新的IngressClass
资源。pathType
字段允许指定路径应如何匹配。此外 默认的ImplementationSpecific
类型,有新的Exact
和Prefix
路径类型。
您可以将Kubernetes 1.18+与Path types配合使用以实现所需的功能。使用以下配置:
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
请记住,如果您要处理多个路径,也可以使用Regular Expressions来改善Ingress配置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。