【发布时间】:2020-11-24 20:37:14
【问题描述】:
我目前正在处理一个案例,我们需要动态创建服务并通过主网关的 URI 子路径提供对它们的访问。
我打算为他们使用虚拟服务进行流量路由。特定服务的虚拟服务应如下所示:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: subpaths-routes
spec:
hosts:
- mainservice.prod.svc.cluster.local
http:
- name: "subpath-redirection"
match:
- uri:
prefix: "/bservices/svc-2345-6789"
route:
- destination:
host: svc-2345-6789.prod.svc.cluster.local
但可能存在大量此类服务(例如数千个)。都遵循相同的路由模式。 我想知道 Istio 是否具有使用如下变量/参数指定 VirtualService 的机制:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: subpaths-routes
spec:
hosts:
- mainservice.prod.svc.cluster.local
http:
- name: "subpath-redirection"
match:
- uri:
prefix: "/bservices/"{{ variable }}
route:
- destination:
host: {{ variable }}.prod.svc.cluster.local
在 Nginx 中,可以通过指定如下内容来做类似的事情:
location ~ /service/(?<variable>[0-9a-zA-Z\_\-]+)/ {
proxy_pass http://$variable:8080;
}
在 Istio 中有没有办法做到这一点? 如果没有,数千个 VS 将如何影响请求处理的性能?就 CPU 和 RAM 的消耗而言,保留它们是否昂贵?
提前谢谢你!
【问题讨论】:
标签: kubernetes routes istio