Tencent/bk-ci 的k8s构建工具
_docs/: 相关文档
base_image/: 基础镜像
jdk/: jdk目录
linux/: linux的一些工具
dockerfile/: 基础镜像的Dockerfile
build.sh: 构建脚本
code_image/: 代码镜像
backend/: 后端构建
gateway/: 网关构建
build.sh: 构建脚本
deploy_yaml/: k8s部署
base/: 基础服务部署
consul-nfs.yaml: consul的挂载
consul-server.yaml: consul-server的启动
ingress-nginx: 定制化的ingress-nginx的helm
ingress.example.yaml: ingress配置模板
deploy.sh:部署脚本
business/: 业务服务部署
backend/: 后端部署
gateway/: 前端部署
deploy.sh: 部署脚本
env.example.properties: 变量配置模板
ingress和volume挂载(这里用的是nfs)可以跟其他业务统一处理, 这里只是作为DEMO方案展示
- 搭建好k8s集群
- 安装mysql5.7, redis2.8, rabbitmq3.8, es5.6, consul1.8
- 找一台物理机器安装nfs
- 共享 /data/nfs目录
- mkdir /data/nfs/consul
- mkdir /data/nfs/artifactory
- mkdir /data/nfs/agent-package
- 所有宿主机需要安装: nfs-common , nfs-utils
- 在code_image目录下:
- 到https://github.com/Tencent/bk-ci/releases/ 下载最新的release包, 解压
- 将 bkci/support-files/file拷贝到 nfs服务器的/data/nfs/artifactory/file
- 在 nfs服务器的/data/nfs/agent-package/中,创建jre/目录(目录结构参考https://github.com/Tencent/bk-ci/tree/master/support-files/agent-package/jre)
- 在 nfs服务器的/data/nfs/agent-package/中,创建packages/目录(目录结构参考https://github.com/Tencent/bk-ci/tree/master/support-files/agent-package/packages)
- 在nfs服务器/data/nfs/agent-package/的jre和packages文件夹中, 根据每个目录下的README.md , 将jre.zip和unzip.exe准备好(可以在Windows的git的/usr/bin里面找到)
- 复制env.example.properties,命名为env.properties,修改为自己想要的变量
- 复制deploy_yaml/base/ingress.example.yaml, 命名为ingress.yaml, 修改自己为自己的域名
- 下载consul到base_image/linux/目录下(确保base_image/linux/consul可执行)
- 下载jdk8到 base_image/jdk/目录下 (确保base_image/jdk/bin/java可执行 , 推荐使用https://github.com/Tencent/TencentKona-8/releases)
- 确认本地有安装docker
- 进入base_image目录
- 执行build.sh
- 确定本地安装有helm2 , kubectl(已经配好集群)
- 进入deploy_yaml/base
- 执行deploy.sh
- 确认本地有安装docker,kubectl(已经配好集群)
- 打开code_image目录
- 修改 bkci/scripts/bkenv.properties
- INSTALL_PATH和MODULE不要修改(否则镜像挂载会有问题)
- 其他的跟自己的环境对应上
- 执行build.sh
- 根据bkci/scripts/bkenv.properties 变量 , 在rabbitmq中执行:
- rabbitmqctl add_vhost ${RABBITMQ_VHOST}
- rabbitmqctl set_permissions -p ${RABBITMQ_VHOST} ${RABBITMQ_USERNAME} "." "." ".*"
- 确定本地安装有helm2 , kubectl(已经配好集群)
- 进入deploy_yaml/business
- 根据自己的需要,复制values.example.yaml到values.yaml, 修改values.yaml的属性
- 执行deploy.sh
详情见 构建机部署
- 外部服务和内部服务的相互调用 , 采用dns来处理