Argo CD是适用于Kubernetes的声明式GitOps持续交付工具,它是CNCF社区的毕业项目。Application是其核心的资源,声明将指定Git仓库中的应用下发到指定的集群中。但是每个Application同时只能发送到1个集群,所以在多集群GitOps场景下通过ArgoCD Application发布应用,需要大量的人力成本。因此Argo CD发布了ApplicationSet,通过一个模板生成多个Applicaiton。但是ArgoCD UI一直没有推出控制台管理ApplicationSet的能力,通过ArgoCD CLI或者kubectl管理ApplicationSet并不直观,也不够方便。
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
什么是
Argo CD ApplicationSet ?
ApplicationSet是Argo CD中用来实现跨多个集群自动化和更加灵活地管理Applications的能力,它简化了管理,使得应对大规模Applicaiton和大量集群更加容易。可以实现使用一个Kubernetes manifest从1个或者多个Git仓库中部署多个应用到多个Kubernetes集群中:
• 部署一个应用到多个集群
• 部署多个应用到一个集群
• 部署多个应用到多个集群
ApplicationSet的功能由ApplicationSet CRD和ApplicationSet Controller实现,Controller通过ApplicationSet CRD定义的模板和generators来生成多个Application。Generators负责生成参数,填充到模板中,Argo CD提供了多种generator应用不同场景,下面列出常用的几个generator:
• List generator:根据固定的key-value列表生成参数
• Cluster generator:根据Argo CD中定义的集群列表自动生成集群参数
• Git generator:根据Git仓库的文件或目录结构生成参数
• Matrix generator:可以组合2个generator生成参数
ACK One GitOps
ACK One GitOps提供了面向多云、多集群、混合云的多集群应用GitOps持续交付能力。通过全托管开源的Argo CD项目,集成ACK One的多集群、阿里云的RAM SSO等能力,为您提供开箱即用的Argo CD能力,和完整、安全的多集群应用GitOps CD体验,快速、一致、安全地实现混合云、多集群下的应用持续部署。
ACK One GitOps优势如下:
• 简化应用跨集群部署
- 支持控制台管理ApplicationSet、原生ArgoCD UI体验、阿里云RAM SSO ArgoCD UI
- 关联集群自动创建ArgoCD cluster secret
- 专属ArgoCD控制台域名,支持CNAME到客户自己的域名
• 提升高可用性:高可用ArgoCD,支持大规模应用
• 基于阿里云RAM的多租管理
• 提升可观测性
- ArgoCD的大盘监控和告警配置,可以查看ArgoCD的metrics和Application Controller等资源使用,及时了解情况。
- 支持ArgoCD日志采集和控制台查看
ACK One多集群应用
控制台管理ApplicationSet
当前Argo CD社区尚未支持通过UI来管理ApplicationSet,这对大规模应用管理场景并不友好,运维难度和成本增加,如:
• 可能需要既使用Argo CD CLI或者kubectl来管理ApplicationSet,又需要用Argo CD UI来查看和管理Applicaiton。
• 编写ApplicationSet yaml时需要先手动获取集群名称或者标签,然后再填入yaml中。
ACK One为了进一步提升用户体验,实现了多集群应用控制台来管理Argo CD ApplicationSet。
创建ApplicationSet
ACK One多集群应用控制台支持快捷创建和YAML创建两种方式创建ApplicationSet,两种方式的改动是互相联动的:
1. 快捷创建:为您提供快速将应用发布到1个或多个集群的能力。
可以通过ArgoCD Cluster名称和标签来选择集群,并在高级配置中可配置同步选项。
2. YAML创建:为您提供更灵活的创建能力。默认提供了demo yaml,将echo-server应用部署到该舰队的所有关联集群中。您可以在这里定义您自己的ApplicationSet,如使用了matrix和git等generator的ApplicationSet。
ApplicationSet创建的Applications展示
创建完ApplicationSet后,ApplicationSet Controller会生成多个Application,点击列表页的Application列的数字,即可查看该ApplicationSet创建和管理的Application列表。这个关联关系仅通过kubectl难以找到。
在该列表页,您可以快速查看概览信息,点击Application名称还可跳转ArgoCD UI查看应用详情。
跳转到如下ArgoCD UI的应用详情页,可以对应用进行同步、回滚(至指定版本),查看应用的完整资源拓扑、状态,并可在ArgoCD UI对资源(Application、Deployment等)进行修改。
编辑与删除ApplicationSet
在列表页中还支持对ApplicationSet进行编辑和删除。
总结
ACK One GitOps致力于为您提供简单、快速、安全的多集群GitOps持续交付能力,让您更加专注于业务开发。