Distributed Cloud Container Platform for Kubernetes (ACK One) では、フリートインスタンスでGitOpsを使用して、バージョン管理、マルチクラスター配布、および継続的デプロイの観点から、Gitリポジトリからデプロイされたアプリケーションを管理できます。 GitOpsは、YAMLマニフェスト、Helmチャート、およびKustomizeを使用して編成されたアプリケーションをサポートします。 GitOpsはオープンソースのArgoCDと互換性があり、可用性の高いコントロールプレーンを提供します。 このトピックでは、フリートインスタンスでGitOpsを使用してマルチクラスタアプリケーションをデプロイする方法について説明します。
前提条件
フリート管理機能が有効になっています。 詳細については、「マルチクラスター管理の有効化」をご参照ください。
複数のクラスターがフリートインスタンスに関連付けられています。 詳細については、「クラスターとフリートインスタンスの関連付け」をご参照ください。
Resource Access Management (RAM) ポリシーAliyunAdcpFullAccessはRAMユーザーにアタッチされています。 詳細については、「RAMユーザーの権限付与」をご参照ください。
CLIのみ: フリートインスタンスのkubeconfigファイルがACK Oneコンソールで取得され、kubectlクライアントがフリートインスタンスに接続されています。
CLIのみ: Alibaba Cloud CLIの最新バージョンがインストールされています、Alibaba Cloud CLIが設定されています。
課金ルール
GitOpsを有効にすると、ACK Oneは次のクラウドリソースを自動的に作成します。
Server Load Balancer (SLB) インスタンス。ArgoCD APIおよびArgoCD UIのエンドポイントを公開するために使用されます。
ArgoCDサービスの実行に使用される、2 vCoresと4 GBのメモリを備えた従量課金制のエラスティックコンテナインスタンス。
詳細については、「マルチクラスター管理のクラウドリソース課金」をご参照ください。
サポートされるリージョン
ACK Oneのフリート管理機能が有効になっているすべてのリージョン。 詳細については、「マルチクラスターフリートおよびワークフロークラスターでサポートされているリージョン」をご参照ください。
手順1: FleetインスタンスでGitOpsコンソールのインターネットアクセスを有効にする
フリートインスタンスを作成すると、ACK Oneは自動的にGitOpsを有効にします。 デフォルトでは、仮想プライベートクラウド (VPC) を介してGitOpsコンソールにアクセスできます。 これを行うには、オフィスネットワークがVPCに接続されていることを確認します。
GitOpsコンソールがアプリケーションを送信および表示するためのインターネットアクセスを有効にするには、次の手順を実行します。
GitOpsコンソールでインターネットアクセスを有効にすると、セキュリティ上のリスクが発生する可能性があります。 この操作を実行する前に、アクセス制御リスト (ACL) ルールが設定されていることを確認してください。
ACKコンソールの使用
ACK Oneコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
[マルチクラスターアプリケーション] ページで、左上隅のフリートインスタンス名の右側にある
をクリックし、ドロップダウンリストからフリートインスタンスを選択します。
新しく作成されたフリートインスタンスでは、デフォルトでGitOpsが有効になっています。 フリートインスタンスでGitOpsが無効になっている場合は、[GitOpsの有効化] をクリックします。 表示されたメッセージボックスで [OK] をクリックします。
フリートインスタンスに対してGitOpsが有効になっている場合、マルチクラスターアプリケーションページにGitOpsコンソールとアクセス制御が表示されます。
[マルチクラスターアプリケーション] ページで、[アクセス制御] をクリックします。 表示されるダイアログボックスで、アクセス制御を有効にし、ホワイトリストに追加するIPアドレスまたはCIDRブロックを入力し、[OK] をクリックします。
インターネットアクセスが有効になったら、[GitOpsコンソール] をクリックして、インターネット経由でGitOpsコンソールにアクセスします。
Alibaba Cloud CLIの使用
最新バージョンのAlibaba Cloud CLIがインストールされていることを確認し、次のコマンドを実行してGitOpsとインターネットアクセスを有効にします。
<your_clusterid>
をフリートインスタンスのIDに置き換えます。AccessControlList
をユーザーエージェントのパブリックIPアドレスに置き換えます。 ユーザーエージェントのパブリックIPアドレスを照会する方法の詳細については、「Argo CDへのパブリックアクセスの有効化」をご参照ください。
aliyun adcp UpdateHubClusterFeature -- ClusterId <your_clusterid> -- PublicAccessEnabled true -- AccessControlList "[\" 10.100.XX.XX/24\"]" -- ArgoCDEnabled true
オプション: RAMユーザーのAccessKeyペアを使用する場合は、AliyunAdcpFullAccessポリシーをRAMユーザーにアタッチする必要があります。 詳細については、「RAMユーザーへの権限付与」をご参照ください。
ステップ2: アプリケーションを作成し、アプリケーションをデプロイする
ACKコンソールの使用
[マルチクラスターアプリケーション] ページで、[GitOpsコンソール] をクリックしてArgoCD UIログインページを開き、[LOG IN VIA ALIYUN] をクリックします。 次に、Alibaba CloudアカウントでArgoCD UIにログインします。
Gitリポジトリに接続します。
ArgoCD UIの左側のナビゲーションウィンドウで、[設定] をクリックし、
を選択します。表示されるパネルで、次のパラメーターを設定し、[接続] をクリックします。
セクション
パラメーター
値
Choose your connection method
VIA HTTPS
HTTPSを使用したCONNECT REPO
タイプ
git
プロジェクト
default
リポジトリURL
https://github.com/AliyunContainerService/gitops-demo.git
[サーバー検証のスキップ]
チェックボックスをオンにします。
Gitリポジトリが接続されると、[CONNECTION STATUS] に [Successful] が表示されます。
アプリケーションを作成します。
ArgoCD UIの左側のナビゲーションウィンドウで、[アプリケーション] をクリックし、[新しいアプリ] をクリックします。
表示されるパネルで、次のパラメーターを設定し、[作成] をクリックします。
セクション
パラメーター
値
一般
アプリケーション名
echo-server-demo
プロジェクト名
default
SYNCポリシー
ドロップダウンリストから [自動] を選択します。
有効な値:
手動: Gitリポジトリからアプリケーションがデプロイされているクラスターに変更を手動で同期する必要があります。
自動: ArgoCD Serverは3分ごとにGitリポジトリをスキャンし、アプリケーションがデプロイされているクラスターに変更を同期します。
SYNCオプション
[AUTO-CREATE NAMESPACE] を選択します。
ソース
リポジトリURL
ドロップダウンリストからGitリポジトリを選択します。 この例では、https://github.com/AliyunContainerService/gitops-demo.git が選択されています。
リビジョン
ヘッド
パス
manifests/helm/echo-server
目的地
クラスターURL /クラスター名
ドロップダウンリストからクラスターを選択します。
名前空間
echo-server-demo
HELM
バリューファイル
values.yaml
echo-server-demoという名前のアプリケーションが作成された後、[アプリケーション] ページでアプリケーションのステータスを表示できます。
[SYNC POLICY] が [Manual] に設定されている場合、[SYNC] をクリックして、指定したクラスターにアプリケーションを手動でデプロイする必要があります。 アプリケーションのステータスが [正常] および [同期] に変更されると、アプリケーションがデプロイされます。
アプリケーションの名前をクリックして、アプリケーションの詳細を表示します。 詳細ページには、アプリケーションが使用するKubernetesリソースのトポロジとステータスが表示されます。
ArgoCD CLIの使用
ArgoCDにログインします。
ArgoCD v2.8.7にアクセスします。 ArgoCD CLI v2.8.7をダウンロードしてインストールします。
Fleetインスタンスで次のコマンドを実行して、ArgoCDの初期パスワードを取得します。
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
フリートインスタンスで次のコマンドを実行し、ポートフォワードを使用してArgoCDにログインします。 デフォルトのユーザー名は
admin
です。export ARGOCD_OPTS='-- port-forward-namespace argocd -- port-forward' argocdログイン ユーザー名: admin パスワード:
期待される出力:
'admin:login' が正常にログイン コンテキスト 'port-forward' が更新されました
フリートインスタンスで次のコマンドを実行して、デフォルトユーザー
admin
のパスワードを変更します。argocdアカウントの更新-パスワード *** 現在ログインしているユーザー (admin) のパスワードを入力します。*** ユーザー管理者の新しいパスワードを入力: *** ユーザー管理者の新しいパスワードを確認します。
期待される出力:
パスワード更新 コンテキスト 'port-forward' が更新されました
Gitリポジトリに接続します。
次のコマンドを実行してGitリポジトリを追加します。
argocd repo add https://github.com/AliyunContainerService/gitops-demo.git -- name echo-server
期待される出力:
リポジトリ 'https:// github.com/AliyunContainerService/gitops-demo.git' added
次のコマンドを実行して、Gitリポジトリを照会します。
argocdレポリスト
期待される出力:
タイプ名REPO INSECURE OCI LFS CREDS STATUS MESSAGEプロジェクト git https://github.com/AliyunContainerService/gitops-demo.git false false false false成功したデフォルト
次のコマンドを実行してクラスターを照会します。
argocdクラスターリスト
期待される出力: ArgoCDクラスターリストには、フリートインスタンスに関連付けられているすべてのクラスターが表示されます。
サーバー名バージョンステータスメッセージプロジェクト https:// 47.97.XX.XX:6443 c83f3cbc90a ****-temp02 1.22 + 成功 https:// kubernetes.de fault.svc in-cluster Unknown Clusterにはアプリケーションがなく、監視されていません。
アプリケーションを作成します。
次のコマンドを実行してアプリケーションを作成します。
を作成しますargocdアプリは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
期待される出力:
アプリケーション 'echo-server 'が作成されました
次のコマンドを実行して、指定したクラスターにアプリケーションをデプロイします。
argocdアプリの同期エコーサーバー
期待される出力:
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOKメッセージ 2022-09-22T14:32:45 + 08:00サービスecho-server-cli echo-server OutOfSync Missing 2022-09-22T14:32:45 + 08:00アプリ展開エコーサーバー-cliエコーサーバーOutOfSync Missing 2022-09-22T14:32:45 + 08:00サービスecho-server-cli echo-server同期進行 2022-09-22T14:32:45 + 08:00サービスecho-server-cli echo-server同期進行サービス /echo-serverが作成されました 2022-09-22T14:32:45 + 08:00アプリ展開echo-server-cli echo-server OutOfSyncがありません展開. apps/echo-serverが作成されました 2022-09-22T14:32:45 + 08:00アプリ展開echo-server-cli echo-server同期展開の進行状況. apps/echo-serverが作成されました 名前: echo-server プロジェクト: デフォルト サーバー: https:// 47.97.XX.XX:6443 名前空間: echo-server-cli URL: https:// 127.0.0.1:52742/applications/echo-server レポ: https://github.com/AliyunContainerService/gitops-demo.git ターゲット: パス: manifests/helm SyncWindow: 同期許可 同期ポリシー: <none> 同期ステータス: (e5c2618) に同期 健康状態: 進行中 操作: 同期 同期リビジョン: e5c261880a4072cdbfa5173add2be426f7f3 **** フェーズ: 成功 開始: 2022-09-22 14:32:44 + 0800 CST 終了: 2022-09-22 14:32:45 0800 CST 期間: 1s メッセージ: 正常に同期 (すべてのタスクの実行) グループ名名ステータス健康フックメッセージ サービスecho-server-cli echo-server同期Progressing Service /echo-server created apps Deployment echo-server-cli echo-server同期deployment.apps/echo-server created
次のコマンドを実行して、アプリケーションを照会します。
argocdアプリリスト
期待される出力:
名CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY条件REPO PATH TARGET echo-server https:// 47.97.XX.XX:6443 echo-server-cliデフォルト同期 <none> <none> https://github.com/AliyunContainerService/gitops-demo.git マニフェスト /helm
ステップ3: フリートインスタンスのGitOpsを無効にする
GitOpsを使用する必要がなくなったら、GitOpsが管理するアプリケーションを削除してから、GitOpsを無効にすることができます。
フリートインスタンスを削除するには、まずフリートインスタンスのGitOpsを無効にする必要があります。
ACKコンソールの使用
ACK Oneコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
[マルチクラスターアプリケーション] ページで、左上隅のフリートインスタンス名の右側にある
をクリックし、ドロップダウンリストからフリートインスタンスを選択します。
[マルチクラスターアプリケーション] ページの右上隅にある [無効にする] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。
Alibaba Cloud CLIの使用
最新バージョンのAlibaba Cloud CLIがインストールされていることを確認し、次のコマンドを実行してフリートインスタンスのGitOpsを無効にします。
aliyun adcp UpdateHubClusterFeature -- ClusterId <your_clusterid> -- ArgoCDEnabled false