写点什么

Argo CD 3.3 带来更安全的 GitOps 删除操作与更顺畅的日常运维体验

作者:Matt Saunders
  • 2026-03-07
    北京
  • 本文字数:2171 字

    阅读完需:约 7 分钟

应用部署和生命周期管理工具 Argo CD 发布 3.3 版本,达到了一个新的里程碑。此次发布扩展了这个广受欢迎的 GitOps 持续交付工具的能力,同时解决了运维人员长期面临的几个痛点。

 

Argo CD 3.3 是一个实用性版本,主要是填补了 GitOps 日常操作中长期存在的几项空白,架构方面没什么变化。该候选版本的重点是删除操作安全性、认证体验、存储库性能以及对集群和自动扩展资源的更精细化控制。

公告博文中,软件工程师 Peter Jiang 将 PreDelete 钩子说成是 Argo CD 3.3 中最显著的变化,完善了当前 PreSync 钩子、Sync 钩子和 PostSync 钩子组成的生命周期。在博文中,Jiang 解释说,用户历来依赖外部脚本、手动清理或 Kubernetes 收集器来做应用程序删除准备,但当团队需要可预测的拆除序列时,这些方法往往显得脆弱而不透明。PreDelete 钩子允许团队定义 Kubernetes 资源,如必须成功运行 Argo CD 才能继续删除应用程序其余资源的作业,钩子执行失败便会阻止删除。在实践上,这将删除操作变成了一个明确的生命周期阶段,可以包括数据导出、流量引流或通知依赖系统。

 

该版本的第二个主要功能是 OIDC 后台令牌刷新,解决了用户将 Argo CD 与 Keycloak 等提供商集成时经常遇到的问题。以前,即使工程师正在积极工作,短暂的访问令牌有效期也会导致他们被强制退出用户界面,在长时间的调试或部署过程中,这很容易引发挫败感。新机制会在令牌过期前在后台自动刷新 OIDC 令牌,并支持配置刷新阈值,即剩余有效期达到多少时触发刷新。Deepak Yadav在LinkedIn上发文时将此列为最突出的改进之一,并将其概括为“告别随机注销”,充分体现了该问题曾引发的强烈不满。

 

该版本还增加了 Git 存储库浅克隆选项。启用时,Argo CD 只获取所需的提交历史记录,而不是整个存储库。公告指出,这可以将大型单体存储库或长期项目的获取时间从分钟减少到秒。这个功能是作为存储库配置中的一个标识实现的,如果运维人员经过评估觉得不需要完整的历史记录,就可以选择这项性能优化。社区讨论将浅克隆与 PreDelete 钩子和 OIDC 刷新视为 3.3 版本的三大亮点。

 

公告还提到了对 Source Hydrator 的改进。这是 Argo CD 处理复杂配置工作流程时越来越核心的部分。新版本引入了内联参数支持——团队不再需要为每个配置更改提交单独的参数文件,改进了对单体存储库布局的支持,并通过优化性能避免了不必要的存储库服务器调用。Jiang 将这些变化归功于社区贡献者,并将此说成是持续优化 Argo CD 以适应大规模配置管理的举措。这些更新使 Source Hydrator 与先前开发的 ApplicationSets 机制形成互补,共同应对多应用部署中日益复杂的配置挑战。

 

在 3.3 版本中,对集群资源的细粒度控制也得到了改进。该版本扩展了 AppProjects 中的 clusterResourceWhitelist,使得访问不仅可以通过 API 分组和种类进行限制,还可以通过个别资源的名称进行限制。这使得一个项目只需要管理特定的 CustomResourceDefinitions ,而不是所有的 CRD 。公告指出,这是长期以来用户一直都有的一个需求,尤其是那些在共享集群上维护多个团队和控制器的用户。LinkedIn 上有评论指出,该变更属于 RBAC 控制机制的整体优化,更精确的 CRD 作用域划分能更好地契合组织安全策略与职责分离原则。

 

该版本还提供了对 KEDA(Kubernetes 事件驱动自动扩展项目)的一级支持。现在,Argo CD 可以直接从用户界面暂停和恢复 KEDA ScaledObjects 和 ScaledJobs,并了解 ScaledJob 的健康状态,取代了此前通用的“未知”指示器。社区反馈指出,该功能在维护窗口和调试场景中尤为实用——通过与管理其他应用资源相同的 GitOps 控制面板,运维人员可临时暂停事件驱动型工作负载。

 

除了这些重要特性外,Jiang 还列出了一系列的小改进,包括:使用 Redis 凭据的卷挂载、添加 Ceph CRD 健康检查、改进 ApplicationSet 用户界面、支持 CLI 按 API 分组过滤、可配置的 Kubernetes API 超时以及围绕刷新行为和视图扩展的几项用户界面改进。

 

总体而言,v3.3 给人的感觉是一个由实际运营痛点塑造的版本。向 Argo CD 的维护者和贡献者表示祝贺——他们向前迈出了坚实的一步。

 

—— Deepak Yadav

 

除 Argo CD 之外,Flux 是另一个由 CNCF 孵化的重点项目,同样致力于实现 GitOps for Kubernetes,但它侧重于控制器驱动模型,而不是集中式 Web 应用程序。Flux 运行一组控制器,用于协调 Git 、 Helm 存储库、容器注册表与集群。它原生支持 Helm 和 Kustomize,并通过 Weave GitOps 界面提供可选的可视化功能(而非捆绑式仪表盘)。它运用资源修剪和保护性注解等机制实现安全的删除操作,允许运维人员在协调过程中阻止特定的对象被移除,并且可以调整 Flux 如何清理版本控制中消失的资源。

 

通常,Argo CD 和 Flux 被视为互补关系,而非严格的竞争关系。Argo CD 内置的 UI 以及与 Argo Rollouts 的紧密集成,使其对追求可视化控制和一流金丝雀/蓝绿部署的企业极具吸引力。而 Flux 的 GitOps 工具包提供了一个基于命令行界面的可组合架构,能够监控镜像库并自动更新配置文件。在 Reddit 上,有用户说已经将这两款工具一同使用。例如,使用 Flux 来管理核心集群基础设施,而使用 Argo CD 来协调应用程序级别的部署。

 

Argo CD 3.3.2 现已发布

 

声明:本文为 InfoQ 翻译,未经许可禁止转载。

 

原文链接:https://www.infoq.com/news/2026/02/argocd-33/