03 Jan 2022
云原生之cicd
最近读到一本云原生相关的书,也结合自己在cicd方便的一些经验,分享下在云原生环境中cicd的流程:
-
开发人员编写好代码后,在本地做一些基本的测试,然后将代码提交到仓库如github
-
创建PR,基于本次修改在PR上运行相关测试,如代码扫描和分析、yaml文件(可以使用kubesec)或者json文件分析、构建测试、单元测试、e2e测试等
-
所有测试都通过后,找相关人员review code,然后merge代码到主干
-
代码merge后,build系统获取最新的代码,开始build image,然后将image push到指定的镜像仓库如dockerhub
-
镜像仓库运行镜像安全扫描(可以使用trivy),确保镜像没有漏洞等问题
-
更新部署应用的manifest文件,一般都是一堆yaml文件,用于部署到kubernetes集群
-
定期从镜像仓库中获取最新的应用,然后运行canary测试,尽早发现问题
-
gitops组件比如argocd监控到有仓库有新的代码提交,触发同步操作,将新的manifest文件部署到kubernetes集群,发布应用
-
监控发布应用的状态,若有问题及时回滚,没有问题就将流量慢慢导入新部署版本,直至100%都导入新部署版本,本次发布完成
:) 未完待续……
参考
- 云原生:运用容器、函数计算和数据构建下一代应用
LEo
at 12:12