bistoury
bistoury copied to clipboard
UI/Proxy增加一个参数,作为客户端浏览器连接proxy的地址
环境:quick start脚本,在k8s中启动。
启动后,在跳板机上通过kubectl port-forward 9091 .....
把跳板机的ip:9091和POD中 的ui:9091映射上。
使用浏览器访问跳板机ip:9091来访问UI
浏览器访问UI后,发现ws错误,原因是浏览器要通过ws连接k8s内部的ip
websocket.js?version=2.0.3:83 WebSocket connection to 'ws://172.23.1.213:9881/ws' failed: Error in connection establishment: net::ERR_ADDRESS_INVALID
doGetWs @ websocket.js?version=2.0.3:83
success @ websocket.js?version=2.0.3:60
u @ jquery-3.3.1.min.js?version=2.0.3:2
fireWith @ jquery-3.3.1.min.js?version=2.0.3:2
k @ jquery-3.3.1.min.js?version=2.0.3:2
(anonymous) @ jquery-3.3.1.min.js?version=2.0.3:2
websocket.js?version=2.0.3:110 ws error
建议: 添加一个启动参数,把proxy绑定的ip和外部访问它的ip分别设置,比如
./quick_start.sh -p 13 -i 172.23.1.213 -out_ip 192.168.100 start
这样,浏览器将会通过192.168.100:9881来访问proxy. 这个地址实际上是跳板机上。 在跳板机可以通过kubectl 做port-forwarding最终把请求转换到POD内部的9881端口上。
目前是这个思路。或者我有时间改一下,提个PR
改了下, 加了个-L publicIp 参数, 放在这里, 我自己正在测试 https://github.com/lff0305/bistoury/tree/addPublicIp
在k8s环境下测试暂时没发现问题。
用法:
登录跳板机,在待测试的POD内部运行
./quick_start.sh -p 13 -i 0.0.0.0 -L 192.168.254.129 start
/// 192.168.254.129 是跳板机ip, UI返回浏览器通过这个地址连接WS
在跳板机上,使用kubectl创建端口映射
kubectl port-forward --address 0.0.0.0 <POD name> -n
各功能正常。