ACK One GitOps: ApplicationSet UIで简素化されたマルチクラスタGitOpsアプリケーション管理

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/ack-one-gitops-simplified-multi-cluster-gitops-application-management-with-applicationset-ui_601875?spm=a2c65.11461433.0.0.4ee35355Xcc2A1)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

Argo CDは、Kubernetes向けの宣言的GitOps継続デリバリーツールであり、CNCFコミュニティの卒業プロジェクトです。Argo CDの中心的なリソースはアプリケーションです。この宣言によって、アプリケーションは指定されたGitリポジトリから特定のクラスターに割り当てられます。しかし、各アプリケーションは一度に1つのクラスターにのみデプロイされるため、複数クラスタGitOpsのシナリオにおいて、Argo CD Applicationを通じてアプリケーションをリリースするために大幅な手作業が必要になります。これを解決するために、Argo CDはApplicationSetを導入し、1つのテンプレートから複数のアプリケーションを生成します。しかし、Argo CD UIではApplicationSetのコンソールでの管理機能が提供されておらず、Argo CD CLIまたはkubectlを通じてApplicationSetを管理することは直感的で便利ではありません。

ACK One GitOpsは、新しいマルチクラスターアプリケーションコンソールをリリースしており、大規模なアプリケーションとクラスターに対するマルチクラスターガイオプスアプリケーション配信の管理体験を大幅に向上させています。これはApplicationSetの管理をサポートしています。

### Argo CD ApplicationSetとは？

ApplicationSetは、複数のクラスター間でアプリケーションを自動的かつ柔軟に管理することを目的としたArgo CDの機能です。これにより、大規模なアプリケーションや多数のクラスターの管理が簡素化されます。ApplicationSetを使用すると、1つ以上のGitリポジトリから複数のKubernetesクラスターに複数のアプリケーションをデプロイできます：

- 複数のクラスターへのアプリケーションデプロイ
- 1つのクラスターへの複数アプリケーションデプロイ
- 複数のクラスターへの複数アプリケーションデプロイ

ApplicationSetの機能は、ApplicationSet CRDとApplicationSet コントローラーによって実現されます。コントローラーは、ApplicationSet CRDで定義されたテンプレートとジェネレーターを使用して複数のアプリケーションを生成します。ジェネレーターは、パラメータを生成し、それらをテンプレートに埋め込む役割を持ちます。Argo CDでは、さまざまなシナリオ向けにいくつかのタイプのジェネレーターを提供しており、よく使用されるものとしては以下の通りです：

- リストジェネレーター：固定のキー・バリューリストに基づいてパラメータを生成する。
- クラスタージェネレーター：Argo CDで定義されたクラスターリストに基づいてクラスターのパラメータを自動生成する。
- Gitジェネレーター：Gitリポジトリのファイルまたはディレクトリ構造に基づいてパラメータを生成する。
- マトリックスジェネレーター：2つのジェネレーターを組み合わせてパラメータを生成する。

### ACK One GitOps

ACK One GitOpsを使用すると、複数クラウド、複数クラスター、ハイブリッドクラウドのシナリオでマルチクラスターアプリケーションの継続的デリバリーパイプラインを構築できます。ACK One GitOpsは、完全管理型のArgo CD、ACK Oneのマルチクラスター管理機能、リソースアクセス管理(RAM)、およびアリババクラウドのシングルサインオン(SSO)と統合されています。これらの機能により、ACK One GitOpsはマルチクラスターアプリケーション配信のための標準的なArgo CD機能と、セキュアで包括的なGitOps CD体験を提供します。これにより、ハイブリッドクラウドや複数クラスターシナリオにおけるアプリケーションの継続的なデプロイが迅速、一貫性があり、安全に行えます。ACK One GitOpsの利点は以下の通りです：

- クラスター間のアプリケーションデプロイを簡素化
- ApplicationSetの管理をサポートし、ネイティブなArgo CD UI体験とアリババクラウドRAM SSOをコンソールで提供
- 関連クラスターのためのArgo CDクラスターシークレットを自動生成
- 専用のArgo CDコンソールドメイン名を提供。CNAMEレコードを使用して独自のドメインを作成可能

- 高可用性の向上：大規模なアプリケーションに対応する高可用性のArgo CD
- アリババクラウドRAMに基づくマルチテナンシー管理
- 可視性の向上

Argo CDのダッシュボード監視とアラート設定により、アプリケーションコントローラーおよび他のコンポーネントのメトリックやリソース使用量を確認できるため、状況に迅速に対応できます。コンソール内でArgoCDログの収集と閲覧をサポート。

### ACK OneのマルチクラスターアプリケーションコンソールによるApplicationSet管理

現在、Argo CDコミュニティではUIを通じたApplicationSetの管理がサポートされていないため、大規模なアプリケーション管理シナリオでは使いやすくなく、操作の複雑さとコストが増大します。例えば：

- ApplicationSetの管理にはArgo CD CLIやkubectlを使用せざるを得ず、同時にArgo CD UIでアプリケーションを表示や管理を行う必要がある。
- ApplicationSet YAMLを書く際に、クラスターネームやラベルを手動で取得し、それらをYAMLに埋め込まなければならない。

ACK Oneは、用户体验をさらに改善するために、ApplicationSetを管理するためのマルチクラスターアプリケーションコンソールを実装しています。

### ApplicationSetの作成

ACK Oneのマルチクラスターアプリケーションコンソールでは、ApplicationSetの作成には「クイック作成」と「YAML作成」の2つの方法がサポートされています。どちらの方法で行われた変更も同期されます。

1. **クイック作成**：1つ以上のクラスターにアプリケーションを発行するための簡単な方法を提供。Argo CDクラスターネームやラベルを選択し、高度な設定で同期オプションを構成できます。
   
2. **YAML作成**：ApplicationSetの作成により多くの柔軟性を提供。デフォルトのデモYAMLが用意されており、これはフリートに関連付けられたすべてのクラスターにecho-serverアプリケーションをデプロイします。ここでは、matrixやgitジェネレーターを使用するなど、独自のApplicationSetを定義できます。

### ApplicationSetによって作成されたアプリケーション

ApplicationSetを作成した後、ApplicationSet コントローラーは複数のアプリケーションを生成します。一覧ページのアプリケーション列の数値をクリックすることで、ApplicationSetによって作成並びに管理されているアプリケーションの一覧を参照できます。これはkubectlだけでは見つけづらい関係を把握できる 页面で、概要情報を迅速に確認できます。アプリケーション名をクリックすることで、Argo CD UIに移動し、アプリケーションの詳細を閲覧できます。

### ApplicationSetの編集と削除

一覧ページからApplicationSetの編集や削除も可能です。

### 結論

ACK One GitOpsは、シンプルで高速、かつセキュアなマルチクラスターガイオプス継続デリバリーキャパビリティを提供することを目指し、ユーザーがビジネス開発に集中できるように努めています。