在云原生的大时代背景下,CI/CD绝对能在整个大框架下占到一席之地,本文主要介绍了如何用当前流行的各种CI/CD的开源工具,将其串联起来形成一套完整的能应用于生产的CI/CD流程,话不多说咱们进入正题。

        在此流程中CI使用的是Jenkins,CD使用的是ArgoCD,代码管理使用了GitLab,镜像仓库使用的是Harbor,下面是整个流程的流程图介绍。

以上流程图分为9个步骤,完整的流程使用文字版的描述如下:

  1.  研发人员将代码变更提交到GitLab仓库中,在发布时间段提交发布任务。

  2. 运维人员触发对应发布任务对应的Jenkins项目,进行发布。

  3. Jenkins拉取最新的代码,执行打包的CI shell脚本(自行研发,下面称为脚本)。

  4. 脚本将代码拷贝到打包机(为了提升打包速度),将最新的代码打包成镜像

  5. 脚本将打包好的镜像推送到自建的Harbor仓库。

  6. 脚本将最新的镜像ID更新到k8s的配置仓库。

  7. ArgoCD会循环监听配置仓库里面的变化。

  8. ArgoCD将最新的配置文件应用到K8S中。

  9. K8S根据最新的配置拉取最新的配置进行更新应用。

        以上步骤比较繁琐,进行了比较详细的拆解。其中的 CI 脚本主要实现打包和更新配置仓库内容即可,其中主要影响整个流程速度的有以下几点:

  1. 最好都是在同一网络环境下,同一内网最好,打包机,镜像仓库以及K8S集群在同一内网环境。

  2. 打包机性能要求高一些,打包速度快。

  3. git项目尽可能小,不要包含大文件。

       以上是针对CI/CD的一个思路,其中的组件都可以替换成其他流行的开源软件或者是自行开发都可,欢迎各位评论留言讨论。

        本文章来自我自己的公众号 实用运维 ,会不定时更新我实践过的内容,欢迎大家关注讨论。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐