すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:セルフマネージド ArgoCD から ACK One GitOps への移行

最終更新日:Mar 26, 2026

このトピックでは、セルフマネージド ArgoCD マスタークラスターを ACK One に移行する方法について説明します。

onectl を使用して、セルフマネージド Argo CD マスタークラスターから ACK One GitOps へ、クラスター Secret、リポジトリ Secret、およびアプリケーションを移行します。移行は、クラスター、リポジトリ、アプリケーションの 3 段階のシーケンスに従って実行され、既存の Argo CD インストールと並行して実行されるため、稼働中のワークロードは影響を受けません。

image

onectl は、Fleet インスタンスと Argo CD マスタークラスター (クラスター ID で識別) の両方の kubeconfig ファイルを取得し、~/.onectl/ ディレクトリに保存します。その後、クラスター Secret、リポジトリ Secret、およびアプリケーションをターゲットの ACK One Fleet インスタンスに移行します。

事前準備:

  • Argo CD マスタークラスターがオンプレミス クラスターである場合は、まず登録済みクラスターに接続します。詳細については、「登録済みクラスターの作成」をご参照ください。

  • Argo CD マスタークラスターの ConfigMap を変更した場合は、移行前に ACK One Fleet インスタンスで対応する構成を更新してください。

  • クラスター Secret にカスタムラベルを追加した場合は、クラスターの移行後に ACK One GitOps の Argo CD UI でそれらのラベルを構成してください。

  • onectl でアプリケーションを移行した後、非カスケード削除を使用してセルフマネージド Argo CD マスタークラスターから削除します。これにより、基盤となる Kubernetes リソースを削除することなく、現在のクラスターから切断され、ACK One GitOps が管理を引き継ぐことができます。

移行の概要

移行は次の 4 つのステップで進められます。

  1. onectl 用の RAM ユーザーを構成 — 必要な権限を付与し、認証情報を構成します。

  2. クラスターの移行 — クラスターを ACK One Fleet インスタンスにアタッチします。

  3. Git リポジトリ構成の移行 — リポジトリ Secret を ACK One GitOps に転送します。

  4. アプリケーションの移行 — すべてまたは選択したアプリケーションを移動し、ソースクラスターからクリーンアップします。

前提条件

開始する前に、以下を確認してください。

ステップ 1: onectl 用の RAM ユーザーを構成

onectl は、Resource Access Management (RAM) ユーザーの AccessKey ID と AccessKey Secret を使用してクラウドリソースを管理します。RAM ユーザーに次の権限を付与します。

  1. AliyunAdcpFullAccess 権限を付与します。詳細については、「RAM ユーザーまたは RAM ロールへのシステム権限ポリシーのアタッチ」をご参照ください。

  2. AliyunCSReadOnly 権限を付与するか、次のアクションを含むカスタム ACK ポリシーを作成します。

    {
        "Action": [
            "cs:DescribeTemplates",
            "cs:DescribeTemplateAttribute",
            "cs:DescribeClusterUserKubeconfig"
        ],
        "Resource": [
            "*"
        ],
        "Effect": "Allow"
    }
  3. セルフマネージド Argo CD クラスターに管理者権限を付与します。詳細については、「RBAC を使用したクラスター内のリソースに対する操作権限の管理」をご参照ください。

  4. 次のコマンドを実行し、プロンプトが表示されたら AccessKey ID と AccessKey Secret を入力します。

    onectl configure

    期待される出力:

    Configuring profile default ...
    Access Key Id [*********************NaY]:
    Access Key Secret [***************************HUd]:
    Ram Username []:
    Default Kubeconfig Path (default is ~/.kube/config) []:
    Saving profile[default] ...
    Done.

ステップ 2: クラスターの移行

  1. Fleet インスタンス ID と Argo CD マスタークラスター ID を環境変数として設定します。onectl はこれらを使用して、対応する kubeconfig ファイルを ~/.onectl/ ディレクトリに取得してキャッシュします。

    export ACKONE_HUB_CLUSTER_ID=ccc47ca148d0147519f229bba********
    export ARGOCD_CLUSTER_ID=ce4bb2004bb0e409eaa4c593d********
  2. 次のいずれかの方法でクラスターを移行します。方法 1: ACK One コンソールを使用 セルフマネージド Argo CD 環境のクラスター (非マスタークラスター) を ACK One コンソールで ACK One Fleet インスタンスに関連付けます。方法 2: onectl を使用

    1. セルフマネージド Argo CD マスタークラスター内のすべてのクラスター Secret に ack_cluster_id: <your ack cluster id> ラベルを追加します。Argo CD UI または kubectl を使用して Secret を編集します。

    2. 次のコマンドを実行します。``shell onectl migrate clusters -n argocd `` > 注: セルフマネージド Argo CD 環境のクラスター Secret にラベルまたはアノテーションを追加した場合は、このステップの完了後に ACK One GitOps の Argo CD UI でそれらを構成してください。

ステップ 3: Git リポジトリ構成の移行

  1. 次のコマンドを実行して、マスタークラスターから ACK One GitOps へリポジトリ Secret を移行します。

    onectl migrate repos -n argocd
  2. すべてのリソースまたは特定のリソースタイプの移行ステータスを確認します。

    # Query the status of all resource types
    onectl migrate status -nargocd
    
    # Query the status of a specific resource type
    onectl migrate status clusters -nargocd
    onectl migrate status repos -nargocd
    onectl migrate status apps -nargocd

    期待される出力:

    #################### Clusters Status ####################
    All 1 clusters were attached successfully to ACK One ccc47****** !
    CLUSTER       STATE    MESSAGE
    ce4b******    Succeed
    
    #################### Repositories Status ####################
    All 1 repos were migrated successfully to ACK One ccc47****** !
    STATE    REPO                                                        TYPE  NAME              MESSAGE
    Succeed  https://github.com/AliyunContainerService/gitops-demo.git  git
    
    #################### Applications Status ####################
    -------------------- Git/Helm Applications --------------------
    Total 'Git/Helm' type applications: 1, success to migrate: 0, pending to migrate: 1
    STATE    NAME       NAMESPACE  CLUSTER  STATUS  HEALTH  REPO  PATH  TARGET  MESSAGE
    Pending  app-git-2  argocd                                                  application has not been migrated to ACK One ccc47******
    
    -------------------- Template Applications --------------------
    STATE    NAME            NAMESPACE  TEMPLATEID                            TEMPLATEPATH  MESSAGE

ステップ 4: アプリケーションの移行

すべてのアプリケーションの移行

次のコマンドを実行して、すべてのアプリケーションを一度に移行します。

onectl migrate apps -n argocd --all

期待される出力:

Applications in source cluster (ArgoCD or AppCenter cluster):
NAME            NAMESPACE  TYPE      TEMPLATEID
app-git-2       argocd     Git/Helm
will be migrated to ACK One ccc47******. Please checking the source cluster and ACK One cluster. Are you sure to migrate the Applications?  [Y/n] y

Total 1 applications will be migrated to ACK One ccc47****** ...
-------------------- Git/Helm Applications --------------------
Application argocd/app-git-2 was migrated succeessfully.
All 1 'Git/Helm' type applications has been migrated successfully o ACK One ccc47******.
STATE    NAME       NAMESPACE  CLUSTER                     STATUS  HEALTH   REPO                                     PATH                        TARGET  MESSAGE
Succeed  app-git-2  argocd     https://172.16.**.**:6443  Synced  Healthy  git@github.com:**/gitops-demo.git  manifests/helm/echo-server  main

-------------------- Template Applications --------------------
No 'Template' type applications need to be migrated.

選択したアプリケーションの移行

1 つ以上の特定のアプリケーションを移行するには、次を実行します。

onectl migrate apps ${app1Name} -n argocd
# Replace ${app1Name} with the name of the application to migrate.

期待される出力:

Applications in source cluster (ArgoCD or AppCenter cluster):
NAME       NAMESPACE  TYPE      TEMPLATEID
app-git-2  argocd     Git/Helm
will be migrated to ACK One ccc47******. Please checking the source cluster and ACK One cluster. Are you sure to migrate the Applications?  [Y/n] y

Total 1 applications will be migrated to ACK One ccc47****** ...
-------------------- Git/Helm Applications --------------------
Application argocd/app-git-2 was migrated succeessfully.
All 1 'Git/Helm' type applications has been migrated successfully o ACK One ccc47ca148d0147519f229bbaea2963b6.
STATE    NAME       NAMESPACE  CLUSTER                     STATUS  HEALTH   REPO                                     PATH                        TARGET  MESSAGE
Succeed  app-git-2  argocd     https://172.16.**.**:6443   Synced  Healthy  git@github.com:**/gitops-demo.git  manifests/helm/echo-server  main

-------------------- Template Applications --------------------
No 'Template' type applications need to be migrated.

ソースクラスターからのアプリケーションの削除

ACK One GitOps でアプリケーションが正常に実行されていることを確認した後、非カスケード削除を使用してセルフマネージド Argo CD マスタークラスターから削除します。

警告

--cascade=false を常に含めてください。これを含めないと、Kubernetes はアプリケーションによって管理されているリソースを削除し、稼働中のワークロードに影響を与えます。

kubectl --kubeconfig ${ARGOCD_CLUSTER_KUBECONFIG_PATH} delete app ${appName} -n argocd --cascade=false

よくある質問

ACK One GitOps に追加されたリポジトリの CONNECTION STATUS が Failed と表示される

最も可能性の高い原因は、ACK One Fleet インスタンスとリポジトリホスト間のネットワーク接続の問題です。ACK One Fleet インスタンスに接続し、ログを確認してください。

kubectl -nargocd get pod

kubectl -nargocd logs argocd-server-xx -c argocd-repo-server

ログに context deadline exceeded (Client.Timeout exceeded while awaiting headers) が含まれている場合、Fleet インスタンスはインターネット経由でリポジトリに到達できません。Fleet インスタンスで使用されている仮想プライベートクラウド (VPC) にインターネット NAT ゲートウェイが構成されていることを確認してください。

  1. ACK One コンソールにログインします。左側のナビゲーションウィンドウで、[フリート > フリート情報]の順に選択します。

  2. [基本情報]」タブをクリックします。[VPC] フィールドを見つけ、リンクをクリックして VPC 詳細ページを開きます。

  3. VPC ページで、[Resource Management] タブをクリックし、[インターネットへのアクセス] セクションを確認します。

argocd-server にはどのようなコンテナが含まれていますか?

コンテナ名説明
argocd-serverArgo CD の API サーバー。Web UI、CLI、および CI/CD システムに API を公開します。
argocd-application-controllerアプリケーションとプロジェクトのリソースを調整し、Git リポジトリからクラスターへのアプリケーションの状態を同期する Kubernetes コントローラー。
argocd-applicationset-controller複数のクラスター間で ApplicationSet を調整します。ApplicationSet は、複数のクラスターにアプリケーションを作成してデプロイします。
argocd-repo-serverGit リポジトリと対話し、Kubernetes マニフェストを生成して返却します。
redisKubernetes API サーバーと Git リポジトリサーバーへのリクエストを削減するために、Argo CD のキャッシュ層を提供します。
dex外部 OpenID Connect (OIDC) プロバイダーとの認証を処理します。他のツールを使用することもできます。
argocd-image-updaterArgo CD によって管理される Kubernetes ワークロード (Deployment など) のコンテナイメージへの変更を検出し、自動的に最新バージョンに更新します。