ACK One フリートインスタンスで GitOps を使用して、Git リポジトリを信頼できる唯一の情報源 (single source of truth) としてアプリケーションを管理できます。これにより、YAML マニフェストディレクトリ、Helm チャート、Kustomize などのさまざまなオーケストレーションメソッドを使用するアプリケーションのバージョン管理、マルチクラスター配信、継続的デプロイメントを実装できます。GitOps は Argo CD のコミュニティバージョンと完全に互換性があり、高可用性のコントロールプレーンを提供します。このトピックでは、ACK One フリートインスタンスで GitOps を使用して複数のクラスターにアプリケーションを配信する方法について説明し、開始するのに役立ちます。
前提条件
複数のクラスターがフリートインスタンスに関連付けられている。 詳細については、「関連クラスターの追加」をご参照ください。
AliyunAdcpFullAccess 権限が RAM ユーザーに付与されている。 詳細については、「RAM ユーザーへの権限付与」をご参照ください。
(CLI メソッドで必須) ACK One コンソール からフリートインスタンスの kubeconfig ファイルを取得し、kubectl を使用してフリートに接続している。
(CLI メソッドで必須) 最新バージョンのクラウドアシスタント CLI がインストールされ、クラウドアシスタント CLI が設定されている。
課金ルール
GitOps を有効にすると、ACK One はデフォルトで次のリソースを作成します。
Argo CD の API および UI アクセスエンドポイントを公開するために、SLB インスタンスが作成されます。
Argo CD サービスを実行するために、2 vCPU と 4 GB のメモリを持つ従量課金 ECI インスタンスが作成されます。
課金の詳細については、「マルチクラスターフリートのクラウドリソースの課金」をご参照ください。
サポートされるリージョン
この機能は、ACK One フリート管理機能が有効になっているすべてのリージョンで利用できます。 詳細については、「マルチクラスターフリートとワークフロークラスターをサポートするリージョン」をご参照ください。
ステップ 1: GitOps コンソールへのパブリックアクセスを有効にする
ACK One フリートインスタンスを作成すると、GitOps 機能はデフォルトで有効になります。 VPC を介して GitOps コンソールにアクセスできます。 これを行うには、オンプレミスネットワークを VPC に接続する必要があります。
インターネット経由で GitOps コンソールにアクセスして、アプリケーションの送信や表示などの操作を実行するには、次の手順に従ってパブリックアクセスを有効にできます。
パブリックアクセスを有効にすると、セキュリティリスクが生じます。 したがって、パブリックアクセスを有効にするときは、アクセスコントロールリスト (ACL) を設定する必要があります。
コンソールでパブリックアクセスを有効にする
ACK One コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
[マルチクラスター GitOps] ページで、左上隅にあるフリート名の横にある
アイコンをクリックし、ドロップダウンリストから宛先フリートを選択します。新しいフリートでは、GitOps はデフォルトで有効になっています。 フリートで GitOps が有効になっていない場合は、[GitOps を有効にする] をクリックします。 表示されるダイアログボックスで、[OK] をクリックします。
フリートで GitOps が有効になっている場合、[GitOps コンソール] ボタンが [マルチクラスター GitOps] ページに表示されます。
[マルチクラスター GitOps] ページで、[パブリックアクセス] の横にある [有効化] をクリックします。 表示される [パブリックアクセスを有効にする] ダイアログボックスで、ホワイトリストに追加する IP アドレスまたは CIDR ブロックを入力し、[OK] をクリックします。
フリートが更新された後、ページの右上隅にある [GitOps コンソール] をクリックして、インターネット経由で GitOps コンソールにアクセスできます。
クラウドアシスタント CLI を使用してパブリックアクセスを有効にする
最新バージョンのクラウドアシスタント CLI を使用していることを確認してください。 次に、次のコマンドを実行して GitOps とパブリックアクセスを有効にします。
<your_clusterid>をフリートインスタンスの ID に置き換えます。AccessControlListの値を、ホワイトリストに追加する CIDR ブロックに置き換えます。 CIDR ブロックの取得方法の詳細については、「GitOps へのパブリックアクセスを有効にする」をご参照ください。
aliyun adcp UpdateHubClusterFeature --ClusterId <your_clusterid> --PublicAccessEnabled true --AccessControlList "[\"10.100.XX.XX/24\"]" --ArgoCDEnabled trueオプション: RAM ユーザーの AccessKey ペアを使用する場合は、RAM ユーザーに AliyunAdcpFullAccess 権限を付与する必要があります。 詳細については、「RAM ユーザーへの権限付与」をご参照ください。
ステップ 2: GitOps コンソールでアプリケーションを作成し、宛先クラスターに配信する
コンソールでアプリケーションをデプロイする
[マルチクラスター GitOps] ページで、[GitOps コンソール] をクリックして Argo CD UI のログインページに移動します。 [LOG IN VIA ALIYUN] をクリックして、Alibaba Cloud アカウントでシングルサインオン (SSO) を使用して Argo CD UI にログインします。
リポジトリに接続する。
Argo CD UI の左側のナビゲーションウィンドウで、[Settings] を選択します。 次に、 を選択します。
表示されるパネルで、次のパラメーターを設定し、[CONNECT] をクリックします。
エリア
パラメーター
値
接続方法の選択
-
VIA HTTP/HTTPS
HTTP/HTTPS を使用してリポジトリに接続
タイプ
git
プロジェクト
default
リポジトリ URL
https://github.com/AliyunContainerService/gitops-demo.git
サーバー検証をスキップ
このチェックボックスを選択します。

リポジトリが接続されると、Git リポジトリの [CONNECTION STATUS] が [Successful] に変わります。

アプリケーションを作成する。
Argo CD UI の左側のナビゲーションウィンドウで、[Applications] を選択し、[+ NEW APP] をクリックします。
表示されるパネルで、次のパラメーターを設定し、[CREATE] をクリックします。
エリア
パラメーター
値
全般
アプリケーション名
echo-server-demo
プロジェクト名
default
同期ポリシー
ドロップダウンリストから [Automatic] を選択します。
次のオプションが利用可能です:
[Manual]: Git リポジトリで変更が行われた場合、変更を宛先クラスターに手動で同期する必要があります。
[Automatic]: Argo CD サーバーは 3 分ごとに Git リポジトリの変更を自動的に検出し、変更を宛先クラスターにデプロイします。
同期オプション
[AUTO-CREATE NAMESPACE] を選択します。
ソース
リポジトリ URL
ドロップダウンリストから既存の Git リポジトリを選択します。 この例では、https://github.com/AliyunContainerService/gitops-demo.git が選択されています。
リビジョン
HEAD
パス
manifests/helm/echo-server
宛先
クラスター URL/クラスター名
ドロップダウンリストから宛先クラスターを選択します。
名前空間
echo-server-demo
HELM
VALUES ファイル
values.yaml
アプリケーションが作成された後、[Applications] ページで echo-server-demo アプリケーションのステータスを表示できます。
[SYNC POLICY] を [Manual] に設定した場合、[SYNC] をクリックしてアプリケーションを宛先クラスターに同期する必要があります。 アプリケーションの [Status] が [Healthy] および [Synced] になると、アプリケーションは同期されます。

echo-server-demo アプリケーションの名前をクリックして、関連する Kubernetes リソースのトポロジーやステータスなどの詳細を表示します。

Argo CD CLI を使用してアプリケーションをデプロイする
Argo CD にログインしてアクセスする。
ArgoCD v2.8.7 に移動して、Argo CD CLI V2.8.7 をダウンロードしてインストールします。
ACK One フリートインスタンスで次のコマンドを実行して、Argo CD システムの初期パスワードを取得します。
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -dACK One フリートインスタンスで次のコマンドを実行して、ポートフォワーディングを使用して Argo CD にログインします。 デフォルトのユーザー名は
adminです。export ARGOCD_OPTS='--port-forward-namespace argocd --port-forward' argocd login Username: admin Password:期待される出力:
'admin:login' logged in successfully Context 'port-forward' updatedACK One フリートインスタンスで次のコマンドを実行して、デフォルトの
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次のコマンドを実行して、追加された Git リポジトリのリストを表示します。
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期待される出力: Argo CD クラスターのリストには、ACK One フリートインスタンスに関連付けられているすべてのクラスターが含まれます。
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.
アプリケーションを作成する。
次のコマンドを実行して、アプリケーションを作成します。
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/helm
関連操作
GitOps でアプリケーションをデプロイした後、次の操作を実行して、フリートと 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 のアプリケーションを削除してから GitOps を無効にすることができます。
ACK One フリートインスタンスを削除する前に、GitOps を無効にする必要があります。
コンソールからのシャットダウン
ACK One コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
[マルチクラスター GitOps] ページで、左上隅にあるフリート名の横にある
アイコンをクリックし、ドロップダウンリストから宛先フリートを選択します。[マルチクラスター GitOps] ページの右上隅にある [GitOps を無効にする] をクリックします。 表示されるメッセージで、[OK] をクリックします。
クラウドアシスタント CLI を使用したシャットダウン
最新バージョンのクラウドアシスタント CLI を使用していることを確認してください。 次に、次のコマンドを実行して GitOps を無効にします。
aliyun adcp UpdateHubClusterFeature --ClusterId <your_clusterid> --ArgoCDEnabled false