应用程序部署和生命周期管理工具Argo CD在发布了3.3版本后达到了一个新的里程碑。这一版本不仅增强了这款广受欢迎的GitOps持续交付工具的功能,还解决了操作人员长期以来面临的若干问题。

Argo CD 3.3的发布被视为一次实质性的改进,它弥补了日常GitOps操作中存在的几处缺陷,而非对系统架构进行重大调整。此次更新主要关注删除操作的安全性、认证体验、仓库性能,以及对集群资源和自动扩展机制的更精确控制。

Argo CD截图

这篇发布公告博客文章中,软件工程师Peter Jiang指出,《PreDelete》钩子是Argo CD 3.3中最显著的变化之一。这一功能完善了原有的《PreSync》、《Sync》和《PostSync》钩子所构成的生命周期管理流程。Jiang在博客中解释说,过去用户通常依赖外部脚本、手动清理操作或Kubernetes的最终化机制来准备应用程序的删除工作,但这些方法在团队需要可预测的拆除流程时往往显得不够可靠或不够透明。《PreDelete》钩子则允许团队明确指定某些Kubernetes资源(例如必须成功运行的作业),只有当这些资源完成相应操作后,Argo CD才会继续删除应用程序的其他资源;如果其中任何步骤失败,删除操作就会被阻止。实际上,这一机制使得删除过程成为了一个有明确流程的生命周期阶段,其中可能包括数据导出、流量清除或通知依赖系统等操作。

此次发布的另一个重要功能是OIDC令牌的自动刷新机制。这一功能有效解决了许多将Argo CD与Keycloak等提供者集成使用的用户所反映的问题。此前,即使工程师正在积极工作,他们的账户也可能会在访问令牌过期后被自动登出,这在长时间的调试或部署过程中会带来很多不便。新版本能够自动在令牌到期前进行刷新,具体触发刷新的条件可以通过配置来设定。LinkedIn用户Deepak Yadav将这一变化称为“告别随机登出现象”,充分体现了这一问题曾经给用户带来的困扰。

此外,还新增了针对Git仓库的浅层克隆功能。当该功能被启用时,Argo CD只会获取所需的提交历史记录,而不会下载整个仓库数据。公告中指出,在规模较大的单体仓库或长期运行的项目中,这一机制能够将数据获取时间从几分钟缩短到几秒钟。该功能是通过在仓库配置中设置相应的标志来实现的,因此对于那些认为自己的工作流程并不需要完整的历史记录的人来说,这是一项可选的性能优化措施。社区发布的关于3.3版本的更新内容中,经常会将浅层克隆功能与PreDelete钩子以及OIDC刷新机制一起作为重点进行介绍。

公告还提到了对“Source Hydrator”功能的改进。这一功能在Argo CD处理复杂配置工作流程的过程中发挥着越来越重要的作用。新版本增加了内联参数支持,因此团队不再需要为每次配置变更分别提交参数文件;同时,该功能也对单体仓库的结构提供了更好的支持,并通过优化代码来避免不必要的仓库服务器调用。Jiang将这些改进归功于社区贡献者的努力,认为这些改动是使Argo CD更适合大规模配置管理这一目标的持续努力的一部分。与之前针对ApplicationSets的功能开发一样,这些改进进一步帮助Argo CD应对多应用程序部署中日益复杂的配置需求。

在3.3版本中,对集群资源的控制能力也得到了进一步提升。AppProjects配置中的clusterResourceWhitelist功能得到了扩展,现在不仅可以按API组和服务类型来限制访问权限,还可以根据具体的资源名称来进行限制。这样一来,项目就可以仅允许访问特定的CustomResourceDefinitions,而不是所有的CRD资源。公告指出,对于那些需要在共享集群上管理多个团队和控制器的用户来说,这一功能正是他们长期以来的需求。LinkedIn上的评论认为,这种更精确的权限控制机制更符合组织的安全政策及职责分离原则。

此外,3.3版本还首次为KEDA提供了官方支持。现在,Argo CD可以直接通过用户界面暂停或恢复KEDA的ScaledObjectsScaledJobs任务,并且能够识别这些任务的运行状态,取代了之前通用的“未知”状态提示。社区用户认为,这一功能在维护窗口和调试过程中尤为实用,因为操作人员可以通过相同的GitOps控制界面来临时暂停那些由事件驱动的任务。

除了上述这些核心功能外,Jiang还列举了一系列其他较小的改进措施,这些措施共同体现了Argo CD的逐步优化过程。例如:使用卷挂载的方式来存储Redis的配置信息;增加了对Ceph CRD状态的检测功能;改进了ApplicationSet的用户界面;支持按API组进行CLI过滤操作;允许用户配置Kubernetes API的超时时间;以及对刷新功能和视图显示方式进行了多处优化。

总体而言,v3.3版本的发布显然是在解决了实际运营中遇到的问题之后才推出的。Argo CD的维护者和贡献者们真的做得非常出色——这一版本确实代表了显著的进步。

- Deepak Yadav

与Argo CD一样,Flux也是另一个由CNCF支持的项目,它同样为Kubernetes实现了GitOps功能。不过Flux更注重使用控制器驱动模型来管理资源,而不是依赖中央化的Web应用程序。Flux运行着一组控制器,这些控制器负责将Git仓库、Helm配置文件以及容器注册表与Kubernetes集群进行同步;它原生支持Helm和Kustomize技术,并且提供了Weave GitOps界面来进行可视化监控,而非使用固定的仪表盘。此外,Flux还利用“资源剪枝”和“保护性注释”等机制来实现安全的资源删除操作,这样就能防止在资源同步过程中某些对象被误删,同时用户也可以根据需要调整Flux清理那些从版本控制系统中消失的资源的频率。

Argo CD和Flux通常被认为是互补关系,而不是严格意义上的竞争者。Argo CD内置了用户界面,并且与Argo Rollouts结合使用,因此非常适合那些需要可视化操作以及进行“金丝雀测试”或“蓝绿部署”的组织。而Flux的GitOps工具包则提供了一个基于CLI的可扩展框架,能够监控镜像注册表并自动更新配置文件。在Reddit上,有些用户报告称他们同时使用了这两种工具:比如用Flux来管理核心集群基础设施,再用Argo CD来协调应用程序级别的部署工作。

Argo CD 3.3.2版本已经正式发布了

Comments are closed.