ArgoCD是什么
Argo CD 是 Kubernetes 的声明式 GitOps 持续交付工具。应用程序定义、配置和环境应该是声明性的和版本控制的。应用程序部署和生命周期管理应该是自动化的、可审计的且易于理解。
官方文档
CD工作流(无ArgoCD)
假设有一个微服务应用程序在Kubernetes集群里运行,当应用程序代码发生变化时,比如添加新功能或错误修复。
Jenkins上的Pipeline将会自动触发,并测试更改,构建新的镜像,并将其推送到镜像存储库。
那么新镜像如何部署呢?一般做法:
- 更新k8s部署的yaml文件里的镜像tag为新镜像tag
- 应用此yaml文件在k8s集群里
但是在CD这个过程也可能会遇到一些问题:
- 安装和设置一些工具,如kubectl,helm,还可能需要在Jenkins上安装一些插件
- 配置这些工具对k8s集群的访问
- 不同平台之间的配置,例如AWS的EKS
- 集群安全性
- 无法对部署状态进行观察
CD工作流(使用ArgoCD)
工作原理是反转工作流
- ArgoCD 就是k8s集群的一部分,我们没有将更改推送到集群里
- ArgoCD agent拉取k8s manifest的改变并将其应用到集群里
- 在k8s集群里部署ArgoCD
- 配置ArgoCD连接对应的Git仓库
- 监视任何更改,如有任何更改,则会自动拉取这些更改并应用到集群里去
关于Git存储库建议将源代码库和配置文件库分开创建,以便更好地应用到集群里去