"); //-->
本文从Go语言自身编译运行特点及云原生应用特性出发,简述了开发云原生功能中所遇到的痛点及对应的调试方法。同时介绍了该方法中所涉及组件的安装部署、调试步骤、操作等,希望能够帮助到从事云原生开发工作的同仁,也欢迎各位同仁交流探讨。
一、概述
目前很火热的云原生资源编排架构都是以Go语言设计开发,Golang区别于其他脚本类语言(如Python),需要在编译后才能运行。由于云原生应用都是以Pod资源封装运行,代码均封装在每一个运行的Pod中,无法直接进行调试,这让功能开发和调试变得十分复杂。针对上述的问题并结合Golang的特性,采用如下Source Codes+Delve+IDE(Goland)+Postman方式进行调试。
二、KubeVela
注:
1. 调试环境已安装KubeVela相关组件
2. 调试环境Go版本1.17+
3. 调试环境Kubernetes版本 v1.20+
KubeVela 社区代码库:
https://github.com/kubevela/kubevela/releases/tag/v1.4.6
根据所使用的版本,下载对应KubeVela代码库,上传到已安装KubeVela组件的集群中。如下所示:
编辑
三、Delve
Delve是Go编程语言的调试器,是为Go提供一个简单的、功能齐全的调试工具。
■下载及编译Delve插件
Delve官网****:
https://github.com/go-delve/delve
设置调试环境的Go环境变量,生成可执行的二进制文件
go env -w GOBIN=/Users/kubevela/study/go
# GOBIN:二进制文件生成后的所在目录
直接安装最新版即可
go install github.com/go-delve/delve/cmd/dlv@latest
■安装Delve插件
将二进制放入Bin目录中
mv dlv /usr/local/bin/
修改二进制文件执行权限
chmod a+x /usr/local/bin/dlv
查看dlv版本,验证安装成功
dlv version
此刻,Delve插件安装完毕!
四、Goland
注:本地代码调试终端也需要配置GO语言环境及存在待调试的源代码。
■点击编辑配置,配置远程调试
编辑
■填写远程调试环境信息
编辑
■在需调试的代码,打上断点
编辑
此刻,IDE配置完毕,IDE充当Delve 调试器的界面,方便操作。
五、调试操作
■编译源代码
进入源代码apiserver目录,执行以下命令
go build -o main -gcflags "all=-N -l" main.go
开启dlv调试程序
dlv --listen=:2345 --headless=true --api-versinotallow=2 --accept-multiclient --check-go-versinotallow=false exec ./main
运行程序:
1. dlv会监听API server listening at: [::]:2345
2. apiserver服务监听HTTP APIs are being served on: 0.0.0.0:8000
编辑
■使用Postman调试API接口
使用集群IP和8000端口号,即可通过本地访问集群API接口。
此刻,程序会停留在断点处,通过Goland IDE工具进一步进行调试。以上就是使用Source Codes+Delve+IDE(Goland)+Postman方式对KubeVela API代码的调试过程,其他Go语言程序调试过程大同小异,可供参考。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。