一、背景
如果你
1.使用Java进行开发
2.使用容器镜像的制品形式进行交付
3.制品最终会运行在阿里云ACK或者其他K8S集群上
那么本文档可以帮助您实现研发流程的协同自动化。
二、用户诉求
1.一般来说,使用K8S部署场景如下:
2.对源代码进行一定的质量检测,比如单元测试,代码扫描
3.将源代码构建成为可交付的制品,也就是容器镜像
4.对制品进行测试环境验证
5.使用完成验证的制品进行线上部署
6.使用基础设施即代码的方式,在代码库中管理与应用相关的所有yaml文件。使用这种方式,将k8s的编排能力完全交给开发,比较灵活,也更加利于DevOps的实施。
上述活动需要有不同角色的参与:开发、测试、运维。如何保证不同参与者可以使用统一的交付流程来进行协作,是云效Flow交付流水线要解决的主要问题。
三、云效解决方案
通过云效持续交付流水线和阿里云K8S很好的结合在一起,为应用的持续交付提供了很好的基础保障,如下图:
开发者提交代码变更到代码库,云效在监听着代码库的变动,一旦代码发生变化,将自动触发云效持续部署流水线一次构建任务的运行,包括代码检查、构建、测试部署、测试验证和生产部署等过程。其中,在构建完之后,生成Docker镜像,并自动上传至应用镜像仓库,在部署阶段(测试环境的部署和生产环境的部署)时,获取当前流水线实例构建出来的镜像版本,通过K8S进行容器编排部署。而这一切,