> 文档中心 > 如何利用KubeOrbit轻松高效地调试微服务

如何利用KubeOrbit轻松高效地调试微服务


测试环境调试现状

常常听到”测试环境不好用影响开发效率“这样的抱怨,由于部署环境的差异性,相信很多开发者都碰到过在本地正常运行的代码,发布到测试环境后出现这样或那样的问题,这时我们就会想了如果测试环境可以进行debug那该多好,但是测试环境可以采取的调试手段比较单一,一般通过日志的方式获取运行中上下文信息,然后分析日志参数等信息,尝试在本地复现bug,这会带来的问题还是不少的,首先,你要在日志系统中找到你需要上下文信息,有时候bug是偶现的你需要反复执行操作寻找日志上下文信息。在比较理想的状态下,恰巧你记录了日志并恰巧通过日志上下文信息分析出了问题,但是现实往往是日志记录没有反映出问题,或者说我们没有记录日志,这时我们可能需要修改代码加日志->部署->执行操作->获取日志->分析日志,然后重复几次以上的操作来慢慢的逼近问题,此时你可能就想了测试环境调试就像在本地调试一样简单就好了,可以在本地打断点随意debug,实时查看上下文参数,那么解决问题的速度就大大提升了。

使用 KubeOrbit 调试

当你还在一行一行查看测试环境日志上下文信息的时候,你的同事已经打上断点进行debug分析了,在使用KubeOrbit之后你会发现调试测试环境的代码是如此的轻松,你可以将任意测试服务转发到本地进行断点调试,查看上下文信息,之前在测试环境中遇到的调试问题,在这里统统不是问题,

KubeOrbit使用起来也是如此的优雅,将本地服务启动后,只需一行命令:

./orbitctl forward --deployment portal-service-deployment --namespace apps --containerPort 9000 --localPort 9000

启动后你会看到以下提示:

此时访问测试环境你会发现所有的请求都会转发到本地,你可以在本地进行变量查看,利用IDEA自带的辅助功能快速定位问题,我们可以设置断点用于快速定位bug,你甚至可以修改本地代码来观测变化,直到解决问题。

当想将终止本地调试使用以下命令即可:

./orbitctl uninstall --deployment portal-service-deployment --namespace namespace-a

整个使用过程十分简单灵活。

使用体验及建议

不过,当我和同事同时使用KubeOrbit 的时候发现,KubeOrbit同一个服务本地只能启动一个,那么当我们对同一个服务并行开发不同的需求,而且同时测试环境出现了问题需要在本地调试时,我们此时只能排队使用了,排队使用也比过去传统查看日志上下文信息找问题的速度要快很多,期望未来KubeOrbit同一个服务可以支持本地启动多个,可以并行测试。如果有可视化的控制台用于管理服务状态那就更好了。