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 合併動作