Flux CD Flux CD

Flux CD と Argo CD:GitOps ツールの選び方

アーキテクチャ、UI、Helm、シークレット、テナンシー、イメージの自動化を比較して、適切なツールを選びます。

10 min learn.level.初級

Flux と Argo CD は、Kubernetes の 2 つの主要な GitOps コントローラーです。どちらも CNCF の graduated プロジェクトで、どちらも本番環境に対応しており、どちらも同じ 4 つの GitOps の原則、つまり宣言的、バージョン管理、自動的な pull、継続的な調整を実装しています。違いは設計にあり、どちらが適しているかは、機能よりもチームによって決まります。このガイドは、選択するため、あるいは両方を実行すると決めるために、両者を比較します。

2 つの設計思想

Argo CD はアプリケーション中心で、1 つの統合されたシステムとして提供されます。API サーバー、マニフェストをレンダリングする repo サーバー、アプリケーションコントローラー、Web UI です。Git のパスをクラスターと namespace に対応付ける Application を定義すれば、あとは Argo CD がやってくれます。

Flux は、小さな単一目的のコントローラー(source、kustomize、helm、notification、そしてオプションのイメージ自動化)のツールキットで、カスタムリソースを通じて通信します。source とデプロイは別々のオブジェクトなので、1 つの GitRepository が複数の Kustomization に供給できます。組み込みの UI はなく、主なインターフェースは CLI と kubectl です。

役に立つ目安は次のとおりです。Argo CD は見てクリックしたいチームに、Flux は組み合わせてスクリプト化したいチームに向いています。

並べて比較

領域Argo CDFlux
アーキテクチャ統合されたコンポーネント独立した組み合わせ可能なコントローラー
Web UI組み込み。ライブのリソースツリーとワンクリックのロールバック組み込みなし。CLI、Grafana、またはコミュニティのダッシュボード
インストール1 つのマニフェストの kubectl applyflux bootstrap。Flux のマニフェストも Git に commit する
自己管理自分自身を管理できる。設定はユーザーが行うbootstrap がデフォルトで Git から自分自身を管理する
同期の制御デフォルトは手動同期。自動化(auto-sync、prune、self-heal)はオプトインデフォルトで自動。本番のゲート制御は Git、タグ、suspend で行う
マルチクラスター一級の機能:1 つのインスタンスが多くのクラスターを登録して管理するデフォルトではクラスターごとに 1 つの Flux のインストール。kubeconfig 経由でリモートクラスターも可能
Helmチャートをテンプレートとしてレンダリングし、マニフェストを適用するhelm-controller が実際の Helm のライフサイクルを実行し、テストと自動ロールバックがある
OCI アーティファクトsource としてサポートマニフェストと Helm チャートの一級の source
イメージの更新別のアドオンプロジェクトタグを Git に commit する、組み込みのオプションのコントローラー
シークレット外部のプラグインまたは operator(Vault、External Secrets、プラグイン経由の SOPS)kustomize-controller に SOPS の復号が組み込み。その他のアプローチも可能
マルチテナンシーArgo CD のプロジェクトと RBAC ポリシーnamespace と service account のなりすまし。Kubernetes RBAC が適用
SSO組み込み(Dex 経由または直接の OIDC、SAML)不要。アクセスは Kubernetes RBAC
通知テンプレート付きの通知エンジンAlert、Provider、Receiver を持つ notification-controller

Argo CD が適している場合

  • 開発者が、kubectl なしで、同期ステータス、リソースグラフ、ログを見たい。
  • 1 つの中央インスタンスで多くのクラスターを管理し、新しいユーザーの導入を素早くしたい。
  • SSO と、プロダクトチーム向けのセルフサービスポータルに大きく依存している。
  • チームが、一部の環境で、明示的な手動の同期ステップを好む。

Flux が適している場合

  • Git に commit される、自動化されたイメージの更新が欲しい。
  • シークレットを、追加のツールを最小限にして、暗号化した状態で Git に置きたい。
  • Helm を多用しており、自動ロールバックを含む、本物のリリースのライフサイクルの処理が欲しい。
  • 内部プラットフォームを構築しており、組み合わせ可能なコントローラーと、テナントのための Kubernetes ネイティブの RBAC を好む。
  • 各クラスターを自己完結にし、認証情報がそこから決して出ないようにしたい。

スケーリング

どちらも大規模なインフラにスケールします。Argo CD は、非常に大きな単一インスタンス向けに、アプリケーションコントローラーのシャーディングと Redis のクラスタリングを提供します。Flux のコントローラーは独立してスケールし、各クラスターが独自のものを実行するため、中央のボトルネックを避けられます。公表されている数値はワークロードによって異なるため、見出しの数字を鵜呑みにせず、自分の環境でベンチマークしてください。

両方を実行できる

両者は敵同士ではありません。一般的な分け方は、開発者が UI の恩恵を受けるアプリケーションのデリバリーに Argo CD を、クラスターのアドオン、インフラ、シークレットに Flux を使うというものです。ただし、2 つに同じリソースを管理させてはいけません。そうしないと、それらをめぐって争います。

選択

  1. 開発者が初日から UI を必要としていますか。Argo CD から始めます。
  2. イメージの自動化、組み込みのシークレットの復号、厳格なクラスターごとの自律性が必要ですか。Flux から始めます。
  3. まだ迷っていますか。このライブラリの最初のアプリケーションのガイドを使って、使い捨ての kind クラスターで、午後いっぱい、それぞれを試してみてください。

両者ともに Git からプレーンな YAML、Helm、Kustomize を読むため、一方から他方への移行は可能ですが、慎重に計画してください。ファイルの名前を変えるだけではありません。リファレンスの詳細は、Flux のドキュメントと Argo CD のドキュメントを参照してください。

人気のガイド