ubuntu下使用Telepresence本地开发调试k8s微服务
安装kubectl参考官方文档:https://kubernetes.io/zh/docs/tasks/tools/install-kubectl/我本地环境是ubuntu,使用apt方式安装:sudo apt-get update && sudo apt-get install -y apt-transport-httpscurl -s https://packages.clou
概述
使用k8s部署微服务,本地开发调试是一个难题。网上的帖子较少,并且大多都是复制黏贴。今天实践了一下使用Telepresence实现本地调试,分享出来希望能帮助更多的开发者。
借助Telepresence实现以下:
- 本地服务可以访问k8s集群内的服务
- 别人访问k8s集群内的服务,请求可以转发到我本地,从而能够debug
环境
- 本地是ubuntu,需要安装kubectl和Telepresence
- 远程有一个k8s集群,团队其他人也用该集群,大家一起开发联调
后面也会尝试在window下实践一番并分享给大家。
安装kubectl
参考官方文档:https://kubernetes.io/zh/docs/tasks/tools/
我本地环境是ubuntu,使用apt方式安装:
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
安装Telepresence
参考:https://www.telepresence.io/reference/install
curl -sO https://packagecloud.io/install/repositories/datawireio/telepresence/script.deb.sh
sudo env os=ubuntu dist=xenial bash script.deb.sh
sudo apt install --no-install-recommends telepresence
rm script.deb.sh
使用步骤
一、修改本地kube config
本地已经安装了kubectl,kubectl这个工具本质上是向k8s集群的api-server发送http请求
我们需要从远程k8s集群中复制一份~/.kube/config
到本地相同目录中,将server改为远程集群的ip,本地的kubectl就能够访问到远程集群。
因为Telepresence需要借助kubectl来在远程集群中启动代理pod来实现双方的互通有无。
二、本地启动telepresence
直接使用telepresence命令就能启动了:
启动成功后,使用kubectl get pods
,你会发现远程集群中启动了一个telepresence的pod。
这时候,你可以直接在本地访问远程集群的服务啦。用nslookup也可以找到集群中的svc了。
三、本地调试服务
启动telepresence后,本地已经可以直接访问远程集群了,所以直接用idea启动你的服务即可。
我本地用IDEA启动了服务A,且在服务A中调用了服务B(B运行在集群中),经过测试,是可以顺利调用的。
四、远程服务收到的请求转发到本地
我们团队每个成员负责不同的微服务模块,常常需要和同事联调,同事调我的接口,我本地使用IDEA进行debug。
以前使用eureka时,我只需要本地起服务,然后把其他实例下线,那么同事的请求就会请求到我本地了。
去除eureka后,微服务之间都是通过k8s的service进行请求,那么我们可以使用telepresence,将远程服务收到的请求转发到我本地。
telepresence --swap-deployment xxx-deployment --expose 9000:9000
- xxx-deployment 是你服务的deployment的名称
- 9000:9000表示将远程9000端口收到的请求到转发到本地9000端口
请求转发到本地后,本地的服务是用IDEA启动的,那么自然可以进行debug了。
更多推荐
所有评论(0)