背景说明
新入职公司要做基于kubesphere 的二开,由于github上的官方文档已经是两年前的了,并且文档比较简陋,上手困难,本文是我基于官方文档和多次百度等总结整理,本地调通,大部分地方已经踩坑处理,如有遗漏欢迎补充,也欢迎大家一起交流学习,本人纯菜。
操作系统信息
本地开发: macOS intl,GO1.20
腾讯轻量云服务器:all in one 2c4G
Kubernetes版本信息
v1.22.12
KubeSphere版本信息
v3.3.2 单节点 all in one
前置条件
1. 服务器安装K8S,kubesphere,推荐以官方的 All In One 形式部署
2. 开发环境安装GOLANG环境,下载编辑器,这边我用的是GOLAND
3. 安装 telepresence
下面开始一步一步操作吧
1.安装GOLANG环境和解释器
略,这部分大家自己操作把
2. 安装K8S和kubesphere
跟着官方文档操作就好,比较简单
https://kubesphere.io/zh/docs/v3.3/quick-start/all-in-one-on-linux/
3. 开发环境安装kubectl
(1)安装kubectl
https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-macos/
(2) 替换 kubeconfig 文件
1).复制服务器的kubeconfig文件到本地,以便在本地通过kubectl连接远程K8S
/root/.kube/config 该文件复制到开发环境的 ~/.kube/ 下
4. 拉取代码
(0). 创建开发目录
mkdir -p $GOPATH/src/kubesphere.io/
cd $GOPATH/src/kubesphere.io/
(1). clone 代码
git clone https://github.com/kubesphere/kubesphere.git
(2). 切换分支,不要master分支上开发会有问题
git checkout -b my_branch v3.3.2
5.复制一份kubesphere的配置到开发环境
- 在服务器通过该命令获取
kubectl -n kubesphere-system get cm kubesphere-config -o yaml
将kubesphere.yaml 的值复制一份,并且保存到项目代码的根目录下
- 现在可以启动项目了 我这边直接DEBUG 启动 kubesphere/cmd/ks-apiserver/apiserver.go
- 开启网真
telepresence intercept --port 9090 ks-apiserver --namespace kubesphere-system
到这边基本完成,可以通过curl 命令请求API,也可以通过控制开去调试啦
8.开发一个kubesphere-api
慢慢写吧