Telepresence:本地调试 Kubernetes 服务,不用反复打包部署
文章目录Telepresence本地调试 Kubernetes 服务不用反复打包部署Telepresence本地调试 Kubernetes 服务不用反复打包部署做 Kubernetes 开发最头疼的事情之一就是改一行代码要经历 build、push 镜像、部署到集群这一整套流程。每次迭代少则两三分钟多则五六分钟一天下来大量的时间耗在等待上。Telepresence 是 CNCF 旗下的一个开源项目专门解决这个问题。它在本地工作站和远程 Kubernetes 集群之间建一条隧道让你在本地运行服务的同时能直接访问集群里的其他资源。改完代码重启本地服务就行不需要再走打包部署那套流程。目前这个项目在 GitHub 上有 7000 多个 Star。它是怎么工作的Telepresence 连接到集群后会在本地创建一个虚拟网络接口同时在集群里部署一个 Traffic Manager 组件。所有集群内的流量都通过这个组件转发。你的本地服务就像跑在集群内部一样能直接访问集群里的数据库、API 服务、消息队列这些资源。它还支持流量拦截功能。可以把原本发往集群中某个服务的流量重定向到你本地运行的实例上。这样你可以在本地用断点调试的方式排查线上流量的问题。核心能力Telepresence 主要提供四个方面的功能第一是本地开发。你可以用自己习惯的 IDE、调试器和各种工具来开发服务不用受限于容器内部的环境。第二是集群访问。本地机器可以直接访问集群里的服务就像 Pod 之间互相调用一样不需要额外配置端口转发或者 VPN。第三是流量拦截。把集群中某个服务的流量引到本地方便调试和排查问题。第四是快速迭代。省掉容器构建和部署的等待时间代码改完重启本地服务就能看到效果。安装和使用Telepresence 分客户端和服务端两部分。客户端装在本地开发机上服务端Traffic Manager部署到目标 Kubernetes 集群里。安装客户端之后先用 telepresence connect 命令连接到集群。连接成功后本地就可以直接访问集群内的服务了。比如你在集群里有个 API 服务跑在 api-service:8080本地 curl http://api-service:8080 就能直接访问到。如果要做流量拦截用 telepresence intercept 命令指定目标服务和本地端口集群里发往这个服务的流量就会被转到你本地。适用场景团队里多个开发者共用一套开发集群每个人在本地跑自己负责的那几个服务其他服务用集群里的共享实例。这样既不需要每个人维护一套完整的集群环境又能保证开发效率。排查线上问题的时候把生产环境的流量引到本地服务上用断点调试的方式逐步排查比在容器里加日志再重新部署要高效很多。微服务架构下做联调几个开发者各自在本地运行自己的服务通过 Telepresence 的流量拦截互相调通不需要把所有服务都部署到同一个环境里。总结Telepresence 解决的核心问题是开发效率。在 Kubernetes 环境下每次代码修改都要走完整的构建部署流程这个等待时间累积起来非常可观。Telepresence 把这个循环缩短到几秒钟对日常开发体验的提升比较明显。累积起来非常可观。Telepresence 把这个循环缩短到几秒钟对日常开发体验的提升比较明显。