搭建开发环境
介绍如何搭建开发环境,编译和部署相关组件。
提示
- 服务是以容器的 方式运行在 Kubernetes(K8S) 集群里面的,所以开发调试需要部署一个 Kubernetes 集群
- 后端服务都是用 Golang 编写,所以需要在开发环境安装 Golang
- 为了把开发的服务发布到 Kubernetes 集群,需要在本地把相关服务构建成 docker 镜像
- 开发环境最好都是在 Linux 上进行,安装使用 docker 和编译源码都很方便
接下来介绍如何搭建开发环境。
部署平台服务
在开始开发之前,请先参考 私有云快速安装 部署平台服务。我们的服务全部使用容器的方式运行在 Kubernetes 集群里面,所以需要先搭建好我们的服务,把这个环境作为自己的开发环境。
这里建议使用一个单独的 CentOS 7 虚拟机,配置(至少 4C8G + 100G 系统盘),安装部署我们的服务。
安装 Go
Golang 版本要求 1.18 以上
安装 Golang 环境请参考: Install Golang
安装配置 Docker
因为要把服务打包成容器镜像,所以需要先安装 docker,这里的 docker 版本需要是 docker-ce 19.03 以上的版本。
下面是不同操 作系统和 Linux 发行版的安装方式,这里还是建议开发环境是 Linux 。
安装 Docker
参考官方文档:https://docs.docker.com/get-docker/。
配置 Docker
后续的代码编译和打包使用了 docker buildx 的功能,需要做在让 docker daemon 开启 experimental 特性,用于编译不同架构的镜像,可参考 docker 官方的 Building multi-platform images 文档。
# 在 docker daemon 的配置里面打开 experimental 特性
$ cat /etc/docker/daemon.json
{
"experimental": true
}
# 重启 docker 服务
$ systemctl restart docker
# 打开 binfmt_misc 特性,用于 qemu 模拟编译其他架构镜像
# 详细说明参考:https://docs.docker.com/build/building/multi-platform/#building-multi-platform-images
$ docker run --privileged --rm tonistiigi/binfmt --install all
# 创建 buildx context
$ docker buildx create --use --name build --node build --driver-opt network=host
编译 cloudpods 组件
Fork 仓库
访问 https://github.com/yunionio/cloudpods ,将仓库 fork 到自己的 github 用户下。
Clone 源码
git clone 前确保 GOPATH 等环境变量已经设置好,clone 你自己 fork 的仓库
$ git clone https://github.com/<your_name>/cloudpods $GOPATH/src/yunion.io/x/cloudpods
$ cd $GOPATH/src/yunion.io/x/cloudpods
$ git remote add upstream https://github.com/yunionio/cloudpods