Argo CD 3.3 发行候选版
Argo CD v3.3 版本带来了一些新功能和改进。具体发布亮点包括:
PreDelete Hooks
PreDelete Hooks 是 Argo CD 中备受期待的功能。v3.3 终于支持了它。
PreDelete hooks 允许你在 Argo CD 删除应用资源之前,先执行 Job 或其他资源。它就像应用生命周期中的缺失环节——之前有 PreSync、Sync、PostSync,现在有了 PreDelete。
之前,要在删除前做清理工作,只能用外部脚本、人工干预,或者寄希望于 finalizers。
示例:
apiVersion: batch/v1
kind:Job
metadata:
name:cleanup-job
annotations:
argocd.argoproj.io/hook:PreDelete
spec:
template:
spec:
containers:
-name:cleanup
image:alpine
command:["sh","-c","echo 'Running pre-delete cleanup...'"]
restartPolicy:Never
示例中定义了一个带有 PreDelete 注解的 Job。当拥有该 Job 的 Application 被删除时,Argo CD 会先创建并运行这个清理 Job,等待它成功完成后,才删除其他资源。如果 Job 失败,删除操作会被阻止。
OIDC 背景令牌刷新
Argo CD 历史上最受欢迎的问题之一终于解决了。很多用户使用 OIDC 提供商(如 Keycloak)时,常常在 UI 活跃操作不到 5 分钟就被登出,因为访问令牌过期。
现在,Argo CD 会在令牌过期前自动后台刷新 OIDC 令牌。新增的 refreshTokenThreshold 配置项允许你设置服务器在令牌剩余有效期多长时主动刷新。这样就不会再有 Keycloak 等 OIDC 提供商中途意外登出的情况。
Source Hydrator 功能增强
Source Hydrator 是 Argo CD v3.x 中开发最活跃的功能之一,v3.3 带来了多项改进,使其更强大、更灵活:
- 内联参数支持:不必每次修改都提交参数文件,支持直接在 hydration 时传入参数。
- 更好的 Monorepo 支持:显著提升了 monorepo 工作流的体验。
- 性能提升:减少不必要的 repo-server 调用,使 hydration 更快更高效。
ClusterResourceWhitelist 支持资源名称
这是一个非常受欢迎的 RBAC 功能,v3.3 加入了支持。
之前 clusterResourceWhitelist 在 AppProjects 中只能按 API 组和类型限制访问,如果允许访问 CustomResourceDefinitions,意味着能访问所有 CRD,无法限制到具体某几个。
现在可以限制到指定资源名称:
apiVersion: argoproj.io/v1alpha1
kind:AppProject
metadata:
name:my-project
spec:
clusterResourceWhitelist:
-group:apiextensions.k8s.io
kind:CustomResourceDefinition
resourceNames:
-crd1.example.com
-crd2.example.com
支持浅克隆仓库
该功能允许 Argo CD 只拉取所需的提交,而不是完整仓库历史,大大缩短了大仓库的 git fetch 时间,从几分钟降到几秒。
用户添加仓库时可以用 --depth 参数开启浅克隆:
argocd repo add <repo-url> --depth
KEDA 第一类支持
如果你在用 KEDA(Kubernetes 事件驱动自动扩缩),这次更新你一定喜欢:
- 暂停 ScaledObject 和 ScaledJob:可以直接在 Argo CD UI 中暂停和恢复 KEDA 资源,方便维护、调试和控制发布。
- ScaledJob 健康检查:Argo CD 现在能识别 KEDA ScaledJob 的健康状态,显示准确状态而非“未知”。
其他重要改进
- 通过 volume mount 提供 Redis 凭据,更安全的凭据管理
- Ceph CRD 健康检查,可直接在 Argo CD 监控 Ceph 存储集群健康
- UI:为 appset UI 支持实现抽象层,迈出完整 AppSet UI 的第一步
- CLI:支持按 API 组过滤
- 可配置 Kubernetes API 超时时间
- 支持 fork 发布到自定义 Quay 镜像库
- UI:刷新按钮带下拉菜单支持硬刷新
- UI:按条件渲染应用视图扩展
- 动作菜单增加图标
- 应用集 pprof 端点
- PullRequest 合并动作