怎么模拟 grpc 的响应?k8s 环境,A 服务和 B 服务在不同的 namespace 中,A 通过 grpc 调用 B 服务的接口,怎么让 B 给 A 返回一个 mock 的响应。谢谢。
你现在碰到的是什么问题? 是不知道怎么写 rpc server 去返回 mock 响应? 还是不知道怎么劫持 A 到 B 的响应?
不知道怎么劫持。好像可以用 mitmproxy,但是不知道怎么将他们串起来。是要将 mitmproxy 制作成镜像,用 k8s 的 deployment 跑起来吗?又涉及用哪个 namespace 的问题,还有用 nodeport 还是 clusterIP 的问题。思路混乱,没有头绪。
我一般的思路都是写个工具,动态的往目标 pod 里注入一个 proxy 容器, 同一个 pod 内的所有容器是用 container 网络模式启动的,共享网络。 如果需要篡改 ip 的话, 一个 iptables 命令就可以了。
您说的内容好像是 istio,我了解得很少。
https://testerhome.com/articles/27001
楼主参考一下我之前在 k8s 里玩 mock server 的帖子。 也是用的 side car 模式。 isto 确实也是这么玩的
您注入的是 mock server,那是不是也可以用这种 side car 方式注入 mitmproxy?谢谢。
当然是可以的
撇开动态注入。如果一个 deployment 里面固定创建两个容器,服务 A 的 container 和 mock 服务的 container。是不是在服务 A 的 container 里执行 “iptables -t nat -A PREROUTING -p tcp --dport 7777 -j REDIRECT --to-port 6666” 类似这样的命令,就可以将服务 A 的请求转向代理到 mock 服务?其中 7777 是服务 A 的端口号,6666 是 mock 服务的端口号。