持续部署(Continuous Delivery,CD)是指软件发布后,可以自动地部署到指定环境中,而不需人工操作。持续部署旨在缩短软件交付周期,开发团队可以更快、更频繁、持续地部署软件。
GitOps是主流的一种持续部署方案,这是一种以开发者为中心、使用开发者熟悉的工具(如Git和其他持续部署工具)。GitOps的核心在于,用一个Git仓库存放目标环境中基础设施的申明式资源文件清单,并定期(或特定规则)同步到目标环境,使得目标环境与Git仓库中的申明式资源文件清单保持一致。当需要更新目标环境时,不再通过命令行工具或者UI界面进行操作,所有变更都通过更新Git仓库来实现。例如,当目标环境是一个Kubernetes集群时,往往会把应用的Deployment、Service、Configmap、Secret、Role、Rolebinding等资源文件提交到Git仓库中。
Argo CD和Flux CD是两款主流的基于GitOps理念实现持续部署的开源项目。以下会对这两个项目进行介绍。
1.Argo CD
Argo CD是基于Kubernetes的声明式持续部署的开源项目(采用Apache 2.0协议),提供了命令行和UI界面。命令行argocd可以完成所有操作,UI界面可以显示丰富的数据信息。因此,Argo CD基本上可以成为开箱即用的工具。
Argo CD的主要特性包括如下:
❖自动部署应用到指定环境中。
❖支持多种配置管理或模板工具(Kustomize、Helm、Ksonnet、Jsonnet、Plain-YAML)。
❖支持管理并部署到多集群。
❖Webhook集成(GitHub、BitBucket、GitLab)。
❖单点登录(Single Sign On,SSO)集成(OIDC、OAuth2、LDAP等)。
2.Flux CD
Flux CD是基于Kubernetes的、开放的、可扩展的持续部署的开源项目(采用Apache 2.0协议),是CNCF旗下的孵化(incubation)项目。Flux CD的命令行可以快速地安装、配置Flux,以及由Flux管理的应用。Flux社区并没有提供UI界面,这对于不习惯只使用命令行的用户来说多少有些不够方便;尤其是在实际使用中,我们通常会有查看应用部署状态、统计信息等查看仪表盘(Dashboard)的需求,这时就需要基于Flux CD进行二次开发。