我有一个部署,它有一个单一的入口定义,它使用路径来引导对后端上的两个服务/Pod的请求
- 一个pod用于API
- 一个pod用于用户界面
只有当URL包含/api/<anything>
时,web地址才应该转到API,否则其他所有内容都应该转到ui。
我的入口设置如下所示
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp
namespace: "myapp"
labels:
app.kubernetes.io/name: myapp
spec:
ingressClassName: nginx
rules:
- host: myapp.dev
http:
paths:
- path: /api/
pathType: Prefix
backend:
service:
name: myapp-api
port:
name: http
- path: /
pathType: Prefix
backend:
service:
name: mayapp-ui
port:
name: http
如果我使用https://myapp.dev/api/endpoint进行测试,请求将循环发送到两个后端pod(我可以在ui pod的日志中看到请求)。
我的印象是,由于/api/endpoint
在路径中,它应该总是匹配最长的规则,并且只发送到API pod?
我是否误解了路径匹配的工作原理?
非常感谢
1条答案
按热度按时间zbdgwd5y1#
你的道路不是独一无二的。
您应该在
annotations
下添加rewrite-target
:并编辑路径名称以Map案例: