通量 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

通量

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 文件

上的磁通架構和工作流程 AWS。

其中:

  • 步驟 1:提取請求 (PR) 合併。開發人員會將變更遞交至存放在 Git 儲存庫中的 Kubernetes 資訊清單或 Helm Chart。檢閱 PR 並合併到主分支時,會在來源控制中更新應用程式的所需狀態。

  • 步驟 2:儲存庫同步。Flux 會在 EKS 叢集的專用命名空間內執行,並持續監控設定的 Git 儲存庫。當偵測到變更時,它會提取最新的更新,以協調宣告的狀態。

  • 步驟 3:部署至目標命名空間。Flux 會將 Git 中所需的狀態與叢集中的即時狀態進行比較。然後,它會將必要的變更套用至目標工作負載命名空間,以便相應地部署或更新應用程式。