本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
通量
Flux 是 Kubernetes 的另一個工具,以獨特的方式實作 GitOps 原則。
GitOps 支援
| 區域圖 | 工具功能 |
|---|---|
Git 作為單一事實來源 |
Flux 使用 Git 儲存庫作為定義系統所需狀態的最終來源。應用程式和基礎設施的所有組態都存放在 Git 中。 |
宣告式組態 |
Flux 使用叢集所需狀態的宣告式描述。這些描述通常是 Kubernetes 資訊清單、Helm Chart 或 Kustomize 浮水印。 |
自動化非同步 |
Flux 會持續監控 Git 儲存庫的變更。當它偵測到變更時,會自動將其套用至叢集。 |
Kubernetes 原生 |
Flux 建置為一組 Kubernetes 控制器和自訂資源。它使用 Kubernetes 中的延伸機制來提供 GitOps 功能。 |
提取型部署模型 |
與傳統的推送式 CI/CD 系統不同,Flux 使用提取式模型。叢集會從 Git 提取所需的狀態,而不是使用外部系統推送變更。 |
持續對帳 |
Flux 會持續比較叢集的實際狀態與 Git 中所需的狀態。它會自動更正在這些狀態之間偵測到的任何偏離。 |
多租戶 |
Flux 透過 Kustomizations 和 HelmReleases 的概念支援多租戶。不同的團隊可以獨立管理自己的組態部分。 |
漸進式交付 |
Flux 透過其 Flagger 元件支援進階部署策略,例如 Canary Releases 和 A/B 測試。 |
Helm 整合 |
Flux 包含 Helm 的原生支援,因此您可以透過 GitOps 輕鬆管理 Helm 版本。 |
映像更新自動化 |
當容器登錄檔中有新版本可用時,Flux 可以自動更新 Git 中的容器映像。 |
Kustomize 支援 |
您可以使用 Flux for Kustomize 提供的原生支援來自訂和修補 Kubernetes 資訊清單。 |
安全性和 RBAC |
Flux 與 Kubernetes RBAC 整合以進行存取控制。它支援透過各種後端進行秘密管理。 |
可觀測性 |
Flux 提供有關對帳和操作的狀態資訊和指標。它與監控工具整合,以增強可觀測性。 |
事件驅動型架構 |
Flux 使用事件驅動方法來實作對帳和更新。 |
可擴展性 |
該工具旨在可擴展,因此您可以新增自訂控制器和資源。 |
跨叢集同步 |
Flux 支援從單一組儲存庫管理多個叢集。 |
相依性管理 |
它允許在系統的不同部分之間定義相依性,並確保正確的操作順序。 |
Webhook 接收器 |
您可以設定 Flux 從 Git 提供者或其他系統接收 Webhook,以立即開始對帳。 |
透過實作這些 GitOps 原則,Flux 提供強大且靈活的系統來管理 Kubernetes 叢集和應用程式。它可確保您的基礎設施和應用程式始終與您的 Git 儲存庫同步,並在複雜的 Kubernetes 環境中提供一致性、可靠性和易於管理。工具的 Kubernetes 原生方法和專注於自動化,使其特別適合雲端原生環境。
如需 Flux 可以解決的案例和需求,請參閱本指南稍後的 Flux 使用案例。如需 Argo CD 和 Flux 之間的比較,請參閱本指南稍後的功能比較。
如需詳細資訊,請參閱 Flux 文件
架構
下圖說明在 EKS 叢集中使用 Flux 的 GitOps 驅動 CD 工作流程。如需詳細資訊,請參閱 Flux 文件
其中:
-
步驟 1:提取請求 (PR) 合併。開發人員會將變更遞交至存放在 Git 儲存庫中的 Kubernetes 資訊清單或 Helm Chart。檢閱 PR 並合併到主分支時,會在來源控制中更新應用程式的所需狀態。
-
步驟 2:儲存庫同步。Flux 會在 EKS 叢集的專用命名空間內執行,並持續監控設定的 Git 儲存庫。當偵測到變更時,它會提取最新的更新,以協調宣告的狀態。
-
步驟 3:部署至目標命名空間。Flux 會將 Git 中所需的狀態與叢集中的即時狀態進行比較。然後,它會將必要的變更套用至目標工作負載命名空間,以便相應地部署或更新應用程式。