ingress-nginx 能不能从 path 动态选择 servicename

2021-04-08 11:22:07 +08:00
 huangmingyou
假设 1000 个服务都是固定的 ingress 规则,当然可以写脚步复制 1000 个 rule 配置。但是能不能,通过 path 参数自动替换成 servicename .
例如 /srv1/path1 路由到 /srv1 服务。
1710 次点击
所在节点    Kubernetes
7 条回复
Judoon
2021-04-08 11:47:27 +08:00
ingress 不是本来就能根据 path 转发到不同的 service 吗?这是基本功能啊?

或者说,我没理解你的意思?
huangmingyou
2021-04-08 11:50:54 +08:00
servicename 不写死。 根据 path 自动匹配。
doublleft
2021-04-08 12:30:38 +08:00
这样搞 鉴权 session cookie 流控之类的实现太麻烦,我单独做一个 nodejs(fastify)服务当作网关 转发流量,好控制一些。有什么需求也好实现
ElmerZhang
2021-04-08 12:40:57 +08:00
自己写一段 nginx 配置,然后用 annotation `nginx.ingress.kubernetes.io/server-snippet ` 设置上去。
配置可以参考 https://stackoverflow.com/questions/5743609/dynamic-proxy-pass-to-var-with-nginx-1-0
huangmingyou
2021-04-08 15:12:06 +08:00
@ElmerZhang k8s 社区那个 ingress-nginx 跑通了,nginx 社区那个 nginx-ingress 还不行
huangmingyou
2021-04-08 15:12:37 +08:00
nginx.ingress.kubernetes.io/server-snippet: |
location /health {
rewrite /health/(.*) /actuator/health break;
proxy_pass http://default-$1;
}
huangmingyou
2021-04-09 09:28:29 +08:00
---
# nginx-ingress 这样配置可以了
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: mytest
namespace: env-pro
annotations:
nginx.ingress.kubernetes.io/server-snippet: |
location /hinfo4 {
rewrite /hinfo4/(.*)/(.*) /actuator/$2 break;
proxy_pass http://$1.env-pro.svc.cluster.local:8080;
}
spec:
rules:
- host: hinfo4.example.cn
http:
paths:
- path: /myservice
backend:
serviceName: myservice
servicePort: 8080
~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/768986

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX