slime-io/slime

关于 lazyload 中 globalsidecar 改为透明代理

Patrick0308 opened this issue · 5 comments

Is your feature request related to a problem? Please describe.
现在在 lazyload 中,global sidecar不是透明代理,这个导致了下面几个问题:

  1. 开启安全认证的服务需要对 global sidecar 进行安全授权,这样会有安全风险。
  2. 关于第一次调用的 metrics 统计是混乱的

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

感觉第一点是更主要的问题,能详述一下透明代理如何工作吗?

我刚开始的想法是 global sidecar 改为一个 l4 的代理和 istio eastwest gateway 类似,也用一个 sni-dnat 路由模式, 使用sni 名称进行路由。
但这个似乎是不可行的,因为一个 sni 要对应一个 denstation (denstation rule定义的),lazy load 这个模式无法在调用方确定 sni 名称。

ew gw的话,这个L4代理也没意义啊。

gw模型也考虑过,之所以用 global sidecar而不是gw就是考虑这个模式能让部分出方向的治理能力生效(gw和mesh模型不同),但确实还是会有部分失效,比如针对业务身份的治理 如 你说的安全策略 等。

几乎无解了,lazyload的这个模式,打破了零信任网络模型。
唯一能做的是在 global-sidecar 帮忙做一个校验,判断客户端是否有权限调用服务端。

global-sidecar 在 slime 中需要解析请求协议进行路由,所以 global-sidecar 不能是一个透明代理。