本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Argo CD
Argo CD 是 Kubernetes 廣泛使用的 GitOps 持續交付 (CD) 工具,符合數個關鍵 GitOps 原則。
GitOps 支援
| 區域圖 | 工具功能 |
|---|---|
宣告式組態 |
Argo CD 使用儲存在 Git 儲存庫中的宣告式組態。應用程式和基礎設施的所需狀態是在 YAML 檔案中定義。這些組態描述應部署的內容,而不是如何部署。 |
版本控制系統做為單一事實來源 |
Git 儲存庫做為整個系統的單一事實來源。應用程式和基礎設施的所有變更都是透過 Git 進行。這可確保完整的稽核線索,以及復原至任何先前狀態的能力。 |
自動化同步 |
Argo CD 會持續監控 Git 儲存庫的變更。偵測到變更時,會自動同步叢集的實際狀態與 Git 中定義的所需狀態。這可確保叢集一律反映儲存庫中所述的狀態。 |
Kubernetes 原生 |
Argo CD 專為 Kubernetes 環境而設計。它利用 Kubernetes 中的宣告性質和自訂資源來管理應用程式。 |
自我修復和偏離偵測 |
Argo CD 會定期比較叢集的即時狀態與 Git 中所需的狀態。如果偵測到任何偏離 (實際和所需狀態之間的差異),它可以自動更正這些差異。 |
多叢集和多租用支援 |
Argo CD 可以從單一執行個體管理多個 Kubernetes 叢集。它支援多租戶,因此不同的團隊可以獨立管理其應用程式。 |
應用程式定義 |
Argo CD 中的應用程式是透過使用應用程式 CRD (自訂資源定義) 來定義。這可讓 Kubernetes 原生方式定義應部署的內容和方式。 |
部署和發行的分隔 |
Argo CD 會將程式碼的部署與發行版本分開給使用者。這是透過各種部署策略實現的,例如藍/綠或金絲雀部署。 |
可觀測性和可稽核性 |
Argo CD 提供 Web UI 和 CLI 來觀察應用程式和叢集的狀態。會記錄所有動作,以提供變更和部署的清晰稽核線索。 |
安全性和 RBAC |
Argo CD 與 Kubernetes 角色型存取控制 (RBAC) 整合。它支援單一登入整合以進行身分驗證和授權。 |
可插入架構 |
Argo CD 支援各種來源控制系統、Helm Chart、Kustomize 和其他 Kubernetes 資訊清單格式。這種靈活性允許它適應各種環境和工作流程。 |
持續交付 (CD) |
雖然 Argo CD 專注於持續交付,但它可以與持續整合 (CI) 工具整合,以建立完整的 CI/CD 管道。 |
透過遵循這些 GitOps 原則,Argo CD 提供強大、可擴展且安全的方式來管理 Kubernetes 部署。它可確保系統的操作狀態始終與 Git 儲存庫中定義的所需狀態同步,並提高複雜 Kubernetes 環境中的一致性、可靠性和易於管理。
如需 Argo CD 可以解決的案例和需求,請參閱本指南稍後的 Argo CD 使用案例。如需 Argo CD 和 Flux 之間的比較,請參閱本指南稍後的功能比較。
如需詳細資訊,請參閱 Argo CD 文件
架構
下圖說明在 EKS 叢集中使用 Argo CD 的 GitOps 驅動 CD 工作流程。如需詳細資訊,請參閱 Argo CD 文件
其中:
-
步驟 1:提取請求 (PR) 合併。開發人員會將變更遞交至存放在 Git 儲存庫中的 Kubernetes 資訊清單或 Helm Chart。當 PR 已檢閱並合併到主分支時,應用程式所需的狀態會在來源控制中更新。
-
步驟 2:儲存庫同步。Argo CD 會在 EKS 叢集中的專用命名空間 (
argocd) 內執行,並持續監控設定的 Git 儲存庫。當偵測到變更時,它會提取最新的更新,以協調宣告的狀態。 -
步驟 3:部署至目標命名空間。Argo CD 會將 Git 中所需的狀態與叢集中的即時狀態進行比較。然後,它會將必要的變更套用至目標工作負載命名空間,以便相應地部署或更新應用程式。這包括管理 Kubernetes 資源,例如部署、服務、ConfigMaps 和秘密,以維持叢集與 Git 事實來源的一致性。