前段时间把公司应用迁移到阿里云 Kubernetes 上了,分享一下目前使用的自动部署方案,先看一下总体流程:
整个流程中使用到的相关产品:
- Coding.NET 源码仓库及持续集成(Jenkins)
- 阿里云容器镜像服务 应用镜像仓库
- 阿里云容器服务 - Kubernetes Kubernetes 集群,使用到应用中心功能
详细说明
CI 构建
应用仓库发布分支推送后触发构建,构建主要分为三步:
- 镜像构建,构建后打 latest 以及发布版本的 tag
- 更新版本,更新环境仓库中的应用版本
- 镜像推送,推送后触发 webhook
Kubernetes 应用部署
使用阿里云 kubernetes 应用中心的触发器功能接收 webhook,触发后获取环境仓库的配置进行应用更新。
环境仓库
存放 kubernetes 应用配置,包括 deployment.yaml、ingress.yaml、service.yaml 等,首次部署可以通过阿里云控制台操作。
触发器
阿里云 kubernetes 应用中心提供触发器功能用于重新部署。云容器镜像服务添加触发器时可以通过正则表达式过滤,可以实现仅发布版本触发部署。