App of Apps
複数のマイクロサービスで構成される複雑なアプリケーションスタックを管理する場合、個々のArgo CDアプリケーションを手動で作成・維持することは運用上の課題となります。App of Appsパターンは、単一の親アプリケーションを通じて複数のアプリケーションを管理できるようにすることで、この複雑さに対処します。
App of Appsパターンは、他のArgo CDアプリケーションを定義するマニフェストを含む親Argo CDアプリケーションを作成することで、Argo CDの宣言的アプローチを活用します。これにより、親アプリケーションがアプリケーション定義を含むGitリポジトリを監視し、これらのマニフェストの変更に基づいて子アプリケーションを自動的に作成、更新、または削除する階層構造が作られます。
このパターンには、いくつかの運用上の利点があります:
- 一元管理:すべてのアプリケーション定義が単一のGitリポジトリで維持され、デプロイメント環境の統一されたビューを提供します
- 環境の一貫性:宣言的な構成を維持することで、複数の環境間でアプリケーションのデプロイメントの一貫性を確保します
- 運用効率:手動の作業を減らし、構成のドリフト(ずれ)の可能性を低減します
- GitOpsの遵守:アプリケーションポートフォリオに対するGitを単一の信頼できる情報源として維持します
このワークフローは以下のように動作します:親アプリケーションはArgo CDのApplicationマニフェストを含むGitリポジトリを継続的に監視します。リポジトリに変更がコミットされると、Argo CDはこれらの変更を検出し、子アプリケーションのライフサイクルを自動的に管理します。各子アプリケーションはそれぞれのソースリポジトリからリソースを同期します。
典型的なリポジトリ構造は以下のようになります:
app-of-apps/
├── parent-app.yaml # 親アプリケーション
└── applications/ # 個々のアプリ定義
├── frontend-app.yaml
├── backend-app.yaml
└── database-app.yaml
このパターンは、環境全体のブートストラップや複数のクラスター間での一貫性維持に特に効果的です。Argo CD UIを通じて個々のアプリケーションを手動で設定するのではなく、アプリケーションポートフォリオ全体を宣言的に定義し、Argo CDにデプロイメントライフサイクルを自動的に管理させることができます。