フラックス - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

フラックス

Flux は、GitOps の原則を独自の方法で実装する Kubernetes 用のもう 1 つのツールです。

GitOps のサポート

[面積] ツール機能

信頼できる唯一のソースとしての Git

Flux は Git リポジトリをシステムの目的の状態を定義するための最終的なソースとして使用します。アプリケーションとインフラストラクチャのすべての設定は Git に保存されます。

宣言型設定

Flux は、クラスターの目的の状態を宣言的に記述します。これらの説明は通常、Kubernetes マニフェスト、Helm チャート、または Kustomize オーバーレイです。

自動同期

Flux は Git リポジトリの変更を継続的にモニタリングします。変更を検出すると、自動的にクラスターに適用されます。

Kubernetes ネイティブ

Flux は、一連の Kubernetes コントローラーとカスタムリソースとして構築されています。Kubernetes の拡張機能メカニズムを使用して GitOps 機能を提供します。

プルベースのデプロイモデル

従来のプッシュベースの CI/CD システムとは異なり、Flux はプルベースのモデルを使用します。クラスターは、外部システムを使用して変更をプッシュするのではなく、Git から目的の状態を取得します。

継続的な調整

Flux は、クラスターの実際の状態を Git の望ましい状態と常に比較します。これらの状態間で検出されたドリフトは自動的に修正されます。

マルチテナンシー

Flux は、KustomizationsHelmReleases の概念を通じてマルチテナンシーをサポートします。異なるチームが設定の独自の部分を個別に管理できます。

プログレッシブ配信

Flux は、Flager コンポーネントを通じて、Canary リリースや A/B テストなどの高度なデプロイ戦略をサポートします。

Helm 統合

Flux には Helm のネイティブサポートが含まれているため、GitOps を通じて Helm リリースを簡単に管理できます。

イメージ更新の自動化

Flux は、コンテナレジストリで新しいバージョンが利用可能になると、Git のコンテナイメージを自動的に更新できます。

Kustomize サポート

Flux for Kustomize が提供するネイティブサポートを使用して、Kubernetes マニフェストをカスタマイズしてパッチを適用できます。

セキュリティと RBAC

Flux は、アクセスコントロールのために Kubernetes RBAC と統合されています。さまざまなバックエンドによるシークレット管理をサポートしています。

オブザーバビリティ

Flux は、調整とオペレーションに関するステータス情報とメトリクスを提供します。モニタリングツールと統合してオブザーバビリティを強化します。

イベント駆動型アーキテクチャ

Flux は、イベント駆動型のアプローチを使用して調整と更新を実装します。

拡張性

このツールは拡張可能なように設計されているため、カスタムコントローラーとリソースを追加できます。

クラスター間の同期

Flux は、単一のリポジトリセットからの複数のクラスターの管理をサポートします。

依存関係管理

これにより、システムのさまざまな部分間の依存関係を定義し、オペレーションの正しい順序を確保できます。

Webhook レシーバー

Git プロバイダーや他のシステムからウェブフックを受信するように Flux を設定して、即時調整を開始できます。

これらの GitOps 原則を実装することで、Flux は Kubernetes クラスターとアプリケーションを管理するための堅牢で柔軟なシステムを提供します。これにより、インフラストラクチャとアプリケーションが常に Git リポジトリと同期され、複雑な Kubernetes 環境で一貫性、信頼性、管理が容易になります。ツールの Kubernetes ネイティブアプローチと自動化に焦点を当てることで、特にクラウドネイティブ環境に適しています。

Flux が対処できるシナリオと要件については、このガイドの後半にある「Flux のユースケース」を参照してください。Argo CD と Flux の比較については、このガイドの後半にある「特徴の比較」を参照してください。

詳細については、Flux のドキュメントを参照してください。

アーキテクチャ

次の図は、EKS クラスター内で Flux を使用する GitOps 駆動型 CD ワークフローを示しています。詳細については、Flux のドキュメントを参照してください。

Flux アーキテクチャとワークフローオン AWS。

各パラメータの意味は次のとおりです。

  • ステップ 1: プルリクエスト (PR) マージ。開発者は、Git リポジトリに保存されている Kubernetes マニフェストまたは Helm チャートに変更をコミットします。PR がレビューされ、メインブランチにマージされると、アプリケーションの望ましい状態がソース管理で更新されます。

  • ステップ 2: リポジトリ同期。Flux は EKS クラスター内の専用名前空間内で実行され、設定された Git リポジトリを継続的にモニタリングします。変更を検出すると、最新の更新がプルされ、宣言された状態が調整されます。

  • ステップ 3: ターゲット名前空間へのデプロイ。Flux は、Git からの目的の状態をクラスター内のライブ状態と比較します。次に、ターゲットワークロード名前空間に必要な変更を適用して、それに応じてアプリケーションをデプロイまたは更新します。