我们的服务原来是请求统一的 envoy 网关,再来分发到对应服务的。
想用 istio virtual service ,配置好 route (测试发现只能创建 inbound route ),通过gateway=mesh把这些路由规则发到每个 pod 的 sidecar 里去。这样服务只要请求自己这个 pod 的 sidecar ,就能靠 sidecar 的 proxy 转发到路由规则对应的服务里去了。(也就不需要那个中心的 envoy 网关来处理集群内部点对点的请求了)
我知道,可以直接请求对应的a-service.namespace.svc.cluster.local,就能请求到 mesh 里的目标服务了。但这样我对 service 名字的管理会比较麻烦,加上一些历史原因(要改很多微服务的代码)。所以,还是希望请求同一个 host ,用 path 来做路由。
现在卡了几个问题:
- 如何请求自己 pod 的 sidecar ?在不跨 pod/跨节点的情况下,最快的触发 sidecar 的 envoy inbound route rule ?
- virtual service 如果出现 match 规则里带了 port(不是 80 的 port),那个 route 规则好像就会从 sidecar 的 envoy route 规则里消失了。是不是缺什么配置?或者
gateway=mesh这种全局规则会有限制?