Closed leveryd closed 1 year ago
向集群外提供被动代理扫描服务,有以下两种方式,该选用哪个?
作为代理服务,目前可选方案是 xray、 proxify、基于Nodejs的代理服务,该选用哪个?
考虑因素是用户体验,尽量不需要让用户记住多个服务地址。如果不可避免,就需要想其他办法优化,比如在控制台dashboard上做超链接、信息提示等。
如果使用ingress形式暴露服务,就无法代理https请求。
如果使用nodeport service,需要固定nodeport service暴露的端口,这样容易提示用户http/https代理地址是"console.com:nodeport"。
需要考虑的因素:
性能没测,目前感觉xray是最合适的。不过它只能支持指定一个upstream-server,流量镜像到多个后端的扫描服务或许需要看看其他的方案,或者变通实现。
TODO: 研究下istio的流量复制、apisix的流量复制,目前看起来似乎也只能镜像到一个后端服务
有两项没有做:
当xray代理以ingress方式对外提供服务时,只能代理http请求、无法代理https
nginx mirror指令很容易拷贝流量到多个代理
location / {
mirror /mirror; # mirror 指令制定镜像 uri 为 /mirror
mirror /mirror; # 每多加一份mirror,流量放大一倍
proxy_pass http://service_a;
}
location = /mirror {
# 判断请求方法,不是GET返回403
if($request_method != GET) {
return 403;
}
internal; # internal 指定此 location 只能被“内部的”请求调用,外部的调用请求会返回 ”Not found” (404)
rewrite ^/mirror(.*)$ $1$request_uri break;
proxy_pass http://service_b$request_uri;
}
对于 https 流量呢?
v0.0.2版本计划
用户场景
核心功能