このトピックでは、GitOps を使用してアプリケーションを管理する方法について説明します。 GitOps を使用して、アプリケーションの作成、デプロイ、更新、およびロールバックを行うことができます。
前提条件
2 つの クラスタが Fleet インスタンスに関連付けられていること (サービスプロバイダークラスタとサービス利用者クラスタ)
アプリケーションの作成とデプロイ
このトピックでは、echo-server-demo という名前のアプリケーションを作成し、Container Service for Kubernetes (ACK) クラスタにデプロイします。 ACK クラスタの API サーバーのアドレスは https://47.97.XX.XX:6443 です。
ネットワークの問題で GitHub にアクセスできない場合は、https://github.com/AliyunContainerService/gitops-demo.git を https://code.aliyun.com/shuwei.hsw/gitops-demo.git に置き換えてください。
Argo CD コンソールの使用
Argo CD UI にログインします。 詳細については、「Argo CD UI を使用して Argo CD にログインする」をご参照ください。
Argo CD UI の左側のナビゲーションウィンドウで、[アプリケーション] をクリックし、次に [+ 新規アプリ] をクリックします。
表示されたパネルで、次のパラメーターを設定し、[作成] をクリックします。
セクション
パラメーター
値
[全般]
[アプリケーション名]
echo-server-demo
[プロジェクト名]
[デフォルト]
[同期ポリシー]
ドロップダウンリストから [自動] を選択します。
有効な値:
[手動]: Git リポジトリからアプリケーションがデプロイされているクラスタへの変更を手動で同期する必要があります。
[自動]: ArgoCD サーバーは 3 分ごとに Git リポジトリをスキャンし、アプリケーションがデプロイされているクラスタに変更を同期します。
[同期オプション]
[名前空間の自動作成] を選択します。
[ソース]
[リポジトリ URL]
ドロップダウンリストから Git リポジトリを選択します。 この例では、[https://github.com/AliyunContainerService/gitops-demo.git] が選択されています。
[リビジョン]
[HEAD]
[パス]
manifests/helm/echo-server
[デスティネーション]
[クラスタ URL/クラスタ名]
ドロップダウンリストからクラスタを選択します。
[名前空間]
echo-server-demo
[HELM]
[値ファイル]
values.yaml
echo-server-demo という名前のアプリケーションが作成された後、[アプリケーション] ページでアプリケーションのステータスを表示できます。
[同期ポリシー] が [手動] に設定されている場合は、[同期] をクリックして、指定されたクラスタにアプリケーションを手動でデプロイする必要があります。 アプリケーションのステータスが ステータス正常同期済み と に変わると、アプリケーションはデプロイされます。

Argo CD CLI を使用する
echo-server-demo という名前のアプリケーションを作成するには、次のコマンドを実行します。
argocd app create echo-server-demo --repo https://github.com/AliyunContainerService/gitops-demo.git --path manifests/directory/production --dest-namespace echo-server-demo --dest-server https://47.97.XX.XX:6443 --sync-policy none予想される出力:
application 'echo-server-demo' created次の表は、コマンドのパラメーターについて説明しています。
パラメーター
説明
repo
アプリケーションの作成に使用される Git リポジトリのアドレス。
path
echo-server-demo アプリケーションの YAML ファイルのサブディレクトリ。
dest-server
ACK クラスタの API サーバーのエンドポイント。
dest-namespace
アプリケーションがデプロイされる名前空間。
sync-policy
アプリケーションの同期ポリシー。 デフォルト値:
none。 有効な値:autoおよびnone。auto: GitOps システムは、Git リポジトリを定期的にスキャンして echo-server アプリケーションの変更を確認し、指定されたクラスタにデプロイされたアプリケーションに自動的に変更を同期します。none: 指定されたクラスタにデプロイされたアプリケーションへの変更を手動で同期する必要があります。
echo-server-demo アプリケーションを指定されたクラスタにデプロイするには、次のコマンドを実行します。
argocd app sync echo-server-demo予想される出力:
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE 2022-10-17T16:43:20+08:00 apps Deployment echo-server-demo echo-server OutOfSync Missing 2022-10-17T16:43:20+08:00 Service echo-server-demo echo-server OutOfSync Missing 2022-10-17T16:43:20+08:00 Service echo-server-demo echo-server Synced Progressing 2022-10-17T16:43:20+08:00 Service echo-server-demo echo-server Synced Progressing service/echo-server-demo created 2022-10-17T16:43:20+08:00 apps Deployment echo-server-demo echo-server OutOfSync Missing deployment.apps/echo-server-demo created 2022-10-17T16:43:20+08:00 apps Deployment echo-server-demo echo-server Synced Progressing deployment.apps/echo-server-demo created Name: echo-server-demo Project: default Server: https://47.97.XX.XX:6443 Namespace: echo-server-demo URL: https://127.0.0.1:65384/applications/echo-server-demo Repo: https://github.com/AliyunContainerService/gitops-demo.git Target: Path: manifests/directory/production SyncWindow: Sync Allowed Sync Policy: <none> Sync Status: Synced to (02af62b) Health Status: Progressing Operation: Sync Sync Revision: 02af62bf21e76f53ebfcc282c45865d2308c**** Phase: Succeeded Start: 2022-10-17 16:43:19 +0800 CST Finished: 2022-10-17 16:43:20 +0800 CST Duration: 1s Message: successfully synced (all tasks run) GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE Service echo-server-demo echo-server-demo Synced Progressing service/echo-server-demo created apps Deployment echo-server-demo echo-server-demo Synced Progressing deployment.apps/echo-server-demo created
アプリケーションの表示
Argo CD コンソールの使用
Argo CD UI の左側のナビゲーションウィンドウで、[アプリケーション] をクリックしてすべてのアプリケーションを表示します。
アプリケーション名をクリックして、アプリケーションの詳細を表示します。 詳細ページには、アプリケーションで使用される Kubernetes リソースのトポロジーとステータスが表示されます。

Argo CD CLI の使用
デプロイされているアプリケーションをクエリするには、次のコマンドを実行します。
argocd app list予想される出力:
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
echo-server https://47.97.XX.XX:6443 echo-server-demo default Synced Healthy <none> <none> https://github.com/AliyunContainerService/gitops-demo.git manifests/directory/productionアプリケーションの更新
GitOps アプリケーションリリースフレームワークでは、アプリケーションを更新する場合、Git リポジトリ内のアプリケーションのソースコードを更新する必要があります。 更新されたコードを Git リポジトリにコミットした後、変更をクラスタに同期できます。
変更を Git リポジトリにコミットします。
指定されたクラスタにデプロイされたアプリケーションに変更を同期するには、次のコマンドを実行します。
argocd app sync echo-server-demoアプリケーションにアクセスするには、次のコマンドを実行します。
curl XX.XX.XX.XX:8080/version # XX.XX.XX.XX をアプリケーションの IP アドレスに置き換えます。予想される出力:
"Hello Echo Server v2.0"
アプリケーションのロールバック
Argo CD コンソールの使用
Argo CD UI の左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 アプリケーションリストで、echo-server-demo アプリケーションを見つけて、その名前をクリックします。
アプリケーション詳細ページで、[履歴とロールバック] をクリックします。 表示される履歴バージョンページで、履歴バージョンを選択し、右上隅にある [ロールバック] をクリックします。

ロールバックが完了したら、詳細ページに戻り、アプリケーションのバージョンを確認します。
Argo CD CLI の使用
使用可能な履歴バージョンを表示するには、次のコマンドを実行します。
argocd app history echo-server-demo予想される出力:
ID DATE REVISION 0 2022-10-17 16:43:20 +0800 CST (02af62b) 1 2022-10-17 16:52:49 +0800 CST (56ae547)56ae547(REVISION列) は現在のバージョンです。 現在のバージョンの ID は 1 です。アプリケーションを
02af62bバージョン (REVISION列) にロールバックするには、次のコマンドを実行します。argocd app rollback echo-server-demo 0ロールバックが完了したら、アプリケーションにアクセスします。
アプリケーションにアクセスするには、次のコマンドを実行します。
curl XX.XX.XX.XX:8080/version # XX.XX.XX.XX をアプリケーションの IP アドレスに置き換えます。予想される出力:
"Hello Echo Server v1.0"