我的Kubernetes应用程序使用Ingress将请求代理到不同的服务器,具体取决于给定的URL:我需要一个扇出配置。我希望请求的URL在转发到服务器时**不被重写。我该怎么做?
我希望将所有/api
URL转发到be
服务,并将所有其他URL转发到fe
服务。
- 对
/api/users
的请求应当作为对/api/users
的请求被转发到be
服务。 - 对
/foo
的请求应当作为对/foo
的请求被转发到fe
服务。
我目前的入口资源是这样的:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
...
spec:
...
rules:
- host: ...
- http:
paths:
- path: /api
backend:
serviceName: be
servicePort: 8080
- path: /
backend:
serviceName: fe
servicePort: 80
但这是行不通的它会为请求提供404 Not Found。
2条答案
按热度按时间whlutmcx1#
Kubernetes入口不会重写您的请求URL,入口控制器会执行此操作(无论您使用的是什么)。例如,如果您的入口控制器是Nginx,您可以在入口上使用annotations来控制此行为。
km0tfn4u2#
老问题,但我得到了一个类似的问题解决了nginx入口注解所建议的格兰特大卫巴赫曼: