ACK One の GitOps を使用すると、Git リポジトリを信頼できる唯一の情報源 (Single Source of Truth) として、複数クラスター間のアプリケーション配信を管理できます。YAML マニフェストディレクトリ、Helm チャート、Kustomize をサポートしており、高可用性のコントロールプレーンを備えたコミュニティ版 Argo CD と完全な互換性があります。
このガイドを読み終えると、以下のことができるようになります。
Argo CD コンソールへのパブリックアクセスを有効にする
Git リポジトリを Argo CD に接続する
送信先クラスターにアプリケーションをデプロイする
前提条件
開始する前に、以下を確認してください。
ファレット管理が有効です。詳細については、「ファレット管理」をご参照ください。
複数のクラスターがフリートインスタンスに関連付けられていること。詳細については、「関連付けられたクラスターの追加」をご参照ください。
ご利用の RAM ユーザーに AliyunAdcpFullAccess 権限が付与されていること。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
(CLI のみ) ACK One コンソールからダウンロードしたフリートインスタンスの kubeconfig ファイルがあり、kubectl がフリートに接続するように設定されていること。
(CLI のみ) 最新バージョンの Cloud Assistant CLI のインストールと設定が完了していること。
課金
GitOps を有効にすると、以下の課金対象リソースが作成されます。
Argo CD API および UI エンドポイントを公開するための SLB インスタンス
Argo CD サービスを実行するための 2 vCPU と 4 GB メモリを備えた従量課金の ECI インスタンス
料金の詳細については、「複数クラスターフリートのクラウドリソースの課金」をご参照ください。
サポートされるリージョン
この機能は、ACK One のフリート管理機能が有効になっているすべてのリージョンで利用できます。詳細については、「複数クラスターフリートとワークフロークラスターをサポートするリージョン」をご参照ください。
ステップ 1: GitOps コンソールへのパブリックアクセスを有効にする
ACK One フリートインスタンスを作成すると、GitOps はデフォルトで有効になります。デフォルトでは、Argo CD コンソールは Virtual Private Cloud (VPC) 内からのみアクセス可能です。インターネット経由でブラウザからアプリケーションを管理するには、パブリックアクセスを有効にします。
パブリックアクセスを有効にすると、セキュリティリスクが生じます。必ずアクセスコントロールリスト (ACL) を設定して、信頼できる IP アドレスまたは CIDR ブロックにアクセスを制限してください。
コンソールを使用する
ACK One コンソールにログインします。左側のナビゲーションウィンドウで、[フリート] > [複数クラスターアプリケーション] を選択します。
[複数クラスター GitOps] ページで、フリート名の横にある
アイコンをクリックし、ドロップダウンリストからご利用のフリートを選択します。GitOps が有効になっていない場合は、[GitOps の有効化] をクリックし、ダイアログボックスで [OK] をクリックします。GitOps がすでに有効になっている場合は、ページに [GitOps コンソール] ボタンが表示されます。
[パブリックアクセス] の横にある [有効化] をクリックします。[パブリックアクセスの有効化] ダイアログボックスで、ホワイトリストに追加する IP アドレスまたは CIDR ブロックを入力し、[OK] をクリックします。
フリートが更新された後、右上隅の [GitOps コンソール] をクリックして、ブラウザで Argo CD コンソールを開きます。
Cloud Assistant CLI を使用する
次のコマンドを実行して、GitOps とパブリックアクセスを同時に有効にします。<your_clusterid> をご利用のフリートインスタンス ID に置き換え、AccessControlList の値を信頼できる CIDR ブロックに置き換えます。
CIDR ブロックの取得方法については、「Argo CD へのパブリックアクセスを有効にする」をご参照ください。
aliyun adcp UpdateHubClusterFeature --ClusterId <your_clusterid> --PublicAccessEnabled true --AccessControlList "[\"10.100.XX.XX/24\"]" --ArgoCDEnabled trueRAM ユーザーの AccessKey を使用する場合は、このコマンドを実行する前に、その RAM ユーザーに AliyunAdcpFullAccess 権限を付与してください。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
ステップ 2: 送信先クラスターにアプリケーションをデプロイする
このステップでは、gitops-demo サンプルリポジトリを使用して、Git リポジトリを接続し、アプリケーションをデプロイする手順を説明します。Argo CD UI と Argo CD CLI の 2 つの方法が利用できます。
Argo CD UI を使用したデプロイ
Argo CD へのログイン
[複数クラスター GitOps] ページで、[GitOps コンソール] をクリックします。Argo CD のサインインページで、[LOG IN VIA ALIYUN] をクリックして、Alibaba Cloud アカウントを使用したシングルサインオン (SSO) でサインインします。
リポジトリの接続
左側のナビゲーションウィンドウで [Settings] をクリックし、[Repositories] > [+ Connect Repo] を選択します。
以下のパラメーターを設定し、[CONNECT] をクリックします。接続が成功すると、[CONNECTION STATUS] が [Successful] に変わります。
エリア パラメーター 値 接続方法の選択 — VIA HTTP/HTTPS CONNECT REPO USING HTTP/HTTPS Type git Project default Repository URL https://github.com/AliyunContainerService/gitops-demo.gitSkip server verification このチェックボックスを選択します 

アプリケーションの作成
左側のナビゲーションウィンドウで [Applications] を選択し、[+ NEW APP] をクリックします。
以下のパラメーターを設定し、[CREATE] をクリックします。
エリア パラメーター 値 一般設定 アプリケーション名 echo-server-demoプロジェクト名 デフォルト 同期ポリシー — 自動 をドロップダウンリストから選択します。自動 を選択すると、Argo CD は Git リポジトリを 3 分ごとにチェックし、変更を自動的にデプロイします。手動 を選択した場合は、SYNC をクリックして同期を手動でトリガーします。 同期オプション — 名前空間の自動作成 ソース リポジトリ URL https://github.com/AliyunContainerService/gitops-demo.gitをドロップダウンリストから選択します。リビジョン HEAD パス manifests/helm/echo-server送信先 クラスター URL 送信先クラスターをドロップダウンリストから選択します。 名前空間 echo-server-demoHELM VALUES ファイル values.yaml[Applications] ページで、
echo-server-demoアプリケーションの Status が Healthy および Synced と表示されていることを確認します。[SYNC POLICY] を [Manual] に設定した場合は、[SYNC] をクリックして初回デプロイメントをトリガーします。
アプリケーション名をクリックして、その Kubernetes リソースのトポロジーとステータスを表示します。

Argo CD CLI を使用したデプロイ
Argo CD へのログイン
Argo CD CLI v2.8.7 をダウンロードしてインストールします。
フリートインスタンスから初期 admin パスワードを取得します。
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -dポートフォワーディングを使用してログインします。デフォルトのユーザー名は
adminです。export ARGOCD_OPTS='--port-forward-namespace argocd --port-forward' argocd login Username: admin Password:期待される出力:
'admin:login' logged in successfully Context 'port-forward' updatedデフォルトの
adminパスワードを更新します。argocd account update-password *** Enter password of currently logged in user (admin): *** Enter new password for user admin: *** Confirm new password for user admin:期待される出力:
Password updated Context 'port-forward' updated
リポジトリの接続
Git リポジトリを追加します。
argocd repo add https://github.com/AliyunContainerService/gitops-demo.git --name echo-server期待される出力:
Repository 'https://github.com/AliyunContainerService/gitops-demo.git' addedリポジトリが追加されたことを確認します。
argocd repo list期待される出力:
TYPE NAME REPO INSECURE OCI LFS CREDS STATUS MESSAGE PROJECT git https://github.com/AliyunContainerService/gitops-demo.git false false false false Successful default利用可能なクラスターをリスト表示します。出力には、フリートインスタンスに関連付けられているすべてのクラスターが含まれます。
argocd cluster list期待される出力:
SERVER NAME VERSION STATUS MESSAGE PROJECT https://47.97.XX.XX:6443 c83f3cbc90a****-temp02 1.22+ Successful https://kubernetes.default.svc in-cluster Unknown Cluster has no applications and is not being monitored.次のステップで必要になるため、送信先クラスターのサーバー URL をメモしておきます。
アプリケーションの作成と同期
アプリケーションを作成します。
https://47.97.XX.XX:6443を送信先クラスターのサーバー URL に置き換えます。argocd app create echo-server --repo https://github.com/AliyunContainerService/gitops-demo.git --path manifests/helm --dest-namespace echo-server-cli --dest-server https://47.97.XX.XX:6443期待される出力:
application 'echo-server' createdアプリケーションを送信先クラスターに同期します。
argocd app sync echo-server期待される出力:
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE 2022-09-22T14:32:45+08:00 Service echo-server-cli echo-server OutOfSync Missing 2022-09-22T14:32:45+08:00 apps Deployment echo-server-cli echo-server OutOfSync Missing 2022-09-22T14:32:45+08:00 Service echo-server-cli echo-server Synced Progressing 2022-09-22T14:32:45+08:00 Service echo-server-cli echo-server Synced Progressing service/echo-server created 2022-09-22T14:32:45+08:00 apps Deployment echo-server-cli echo-server OutOfSync Missing deployment.apps/echo-server created 2022-09-22T14:32:45+08:00 apps Deployment echo-server-cli echo-server Synced Progressing deployment.apps/echo-server created Name: echo-server Project: default Server: https://47.97.XX.XX:6443 Namespace: echo-server-cli URL: https://127.0.0.1:52742/applications/echo-server Repo: https://github.com/AliyunContainerService/gitops-demo.git Target: Path: manifests/helm SyncWindow: Sync Allowed Sync Policy: <none> Sync Status: Synced to (e5c2618) Health Status: Progressing Operation: Sync Sync Revision: e5c261880a4072cdbfa5173add2be426f7f3**** Phase: Succeeded Start: 2022-09-22 14:32:44 +0800 CST Finished: 2022-09-22 14:32:45 +0800 CST Duration: 1s Message: successfully synced (all tasks run) GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE Service echo-server-cli echo-server Synced Progressing service/echo-server created apps Deployment echo-server-cli echo-server Synced Progressing deployment.apps/echo-server createdアプリケーションが実行中であることを確認します。
argocd app list期待される出力:
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET echo-server https://47.97.XX.XX:6443 echo-server-cli default Synced Healthy <none> <none> https://github.com/AliyunContainerService/gitops-demo.git manifests/helmSTATUS が Synced、HEALTH が Healthy になると、アプリケーションは正常にデプロイされています。
その他の操作
アプリケーションをデプロイした後、これらの操作を使用して GitOps の設定を維持します。
Argo CD ConfigMap の設定
[複数クラスター GitOps] ページで、[GitOps] の折りたたみセクションにある [Argo CD ConfigMap] を見つけます。
[Argo CD ConfigMap] の横にある [設定] をクリックします。
[Argo CD ConfigMap 設定] ページで、[設定項目を選択] ドロップダウンリストから設定項目を選択し、[設定の変更] コードエディタで編集します。一般的な設定項目とその再起動ポリシーについては、「一般的な設定項目」をご参照ください。
Argo CD コンポーネントの再起動
[複数クラスター GitOps] ページで、[GitOps] の折りたたみセクションにある [Argo CD コンポーネント] を見つけます。
Argo CD コンポーネント の横にある [再起動] をクリックします。
ダイアログボックスで、[再起動するアプリケーションを選択] ドロップダウンリストから再起動するコンポーネント (例: argocd-server) を選択し、[OK] をクリックします。
GitOps の無効化
GitOps を無効にする前に、GitOps 内のすべてのアプリケーションを削除してください。また、ACK One フリートインスタンスを削除する前に GitOps を無効にしてください。
コンソールを使用する場合:
ACK One コンソールにログインします。左側のナビゲーションウィンドウで、[フリート] > [複数クラスターアプリケーション] を選択します。
[複数クラスター GitOps] ページで、
アイコンをクリックし、ご利用のフリートを選択します。右上隅の [GitOps の無効化] をクリックし、[OK] をクリックします。
Cloud Assistant CLI を使用する場合:
aliyun adcp UpdateHubClusterFeature --ClusterId <your_clusterid> --ArgoCDEnabled false次のステップ
Argo CD へのパブリックアクセスを有効にする — 追加のアクセスの制御設定を行う
一般的な設定項目 — ConfigMap 設定で Argo CD の動作をカスタマイズします
複数クラスターフリートのクラウドリソースの課金 — GitOps リソースのコストを理解します