一开始是想用 Jenkins 来做的,不过我们这边的代码放在code上,愣是没找到 Jenkins 的插件配置 git 的 hook ,碰巧发现了 code 这个平台的 Flow 工具,于是就用了Code + Flow + 自建K8 这一套来实现,原理上都是一样的 ,web hook 提交打包镜像,k8 发布部署容器,运行服务。
包含工具
Codeup (https://codeup.teambition.com/)等同于 Gitlab、Coding 等代码托管平台
Flow (https://flow.teambition.com/)等同于Jenkins等 CI集成工具
自建 K8s 集群 用于 CD发布 服务流水线
先来看看最终效果
- 准备
首先 ,需要准备
存放在 Code 的代码库,代码里包含 构建 Docker 容器的 Dockerfile ,编排容器的yml文件,我的目录结构如下:
黄色的是 Dockfile 和 run dockerfile 中 用到的 sh
Flow 配置流程
Flow 是 阿里的一款CI工具,类似 Jenkins ,配置如下3步:
先来配置第一步,代码源 和 web hook
设置 代码仓库 ,开启 源码触发,也就是 webhook ,在代码仓库也添加配置,其实和其他的工具都差不多流程
第二步,设置 docker 镜像打包的 dockerfile 位置,这也是为啥要把dockerfile 放在仓库中的原因,以及设置 dokcerfile 推送的地址 ,由于是阿里自家的工具,这里都是一套阿里的,直接配置阿里镜像仓库
如图,基本没什么好说的,授权会跳转到阿里云,填写 RAM ,这一步提供了 你的 docker registry 的 pull push 权限,相当于替代了 docker login 或者 kubectl 的 secert ,registry 身份验证
第三步,k8发布
按道理来说,这里的步骤都是自己选择定制的,可以选择 k8 发布的组件,然后配置,提供了k8自建集群和 k8阿里云集群的两种选择,我这里都没有用,我是配置了 k8master 节点的ssh ,然后自己配置了 sh 脚本,去定制 k8发布的逻辑
至此,流水线配置完成,我的这个流水线是发布10个节点 ,来看下效果
效果
仓库 push 之后通过 webhook 触发 docker 镜像构建
推送到阿里云