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

Container Registry:パスワードレスコンポーネントを使用したクロスアカウントイメージプル

最終更新日:Apr 29, 2026

Container Service for Kubernetes (ACK) クラスターと ACR Enterprise Edition インスタンスが異なる Alibaba Cloud アカウントによって管理されている場合、ネットワーク接続を確立し、クラスターがコンテナイメージをプルしてワークロードをデプロイできるように権限を付与する必要があります。本トピックでは、aliyun-acr-credential-helper パスワードレスコンポーネントを使用して、アカウント間でイメージをプルする方法について説明します。

選定戦略

ビジネス要件に最も適したネットワーク接続方法およびアカウント権限付与方法を選択してください。その後、選択した権限付与方法をサポートするパスワードレスコンポーネントを選択します。

詳細な手順については、「ネットワーク接続の構成」および「アカウント権限付与およびパスワードレスコンポーネントの構成」をご参照ください。その後、「クロスアカウントイメージプルの検証」を実行します。
説明

本トピックにおける「クロスアカウント」とは、異なる Alibaba Cloud アカウント (root ユーザー) 間を指し、RAM ユーザー (サブアカウント) 間ではありません。

前提条件

  • パスワードレスコンポーネント用の RAM ロールに必要な権限が付与されています。

  • パスワードレスコンポーネントをサポートする ACK クラスターが利用可能です。

    • aliyun-acr-credential-helper (マネージド)

      ACK マネージドクラスターACK サーバーレスクラスター、および ACK Edge クラスター(Kubernetes 1.22 以降)

    • aliyun-acr-credential-helper (セルフマネージド)

      ACK マネージドクラスター および ACK 専用クラスター(Kubernetes 1.20 以降)

  • ACR Enterprise Edition インスタンスが利用可能です。

    重要
    • パスワードレスコンポーネントは、ACR Enterprise Edition インスタンスおよび 2024 年 9 月 8 日以前に作成された Personal Edition インスタンスのみをサポートします。パスワードレスコンポーネントが使用できない場合は、「imagePullSecrets の使用方法」をご参照ください。

操作手順

ステップ 1:ネットワーク接続の構成

アカウント間でイメージをプルする際、イメージをプルする ACK クラスターとイメージを格納する ACR Enterprise Edition インスタンスは、それぞれ別の Alibaba Cloud アカウント配下の異なる VPC に存在し、さらに異なるリージョンにある場合もあります。イメージをプルする前に、ネットワーク接続を確立し、必要なドメイン名が名前解決可能であることを確認する必要があります。以下のいずれかの方法を使用できます。

  • パブリックネットワーク接続:ACR Enterprise Edition インスタンスにパブリックエンドポイントを構成し、ACK クラスターのパブリックネットワークアクセスを有効化します。これにより、イメージはパブリックネットワーク経由で転送されます。ただし、この方法はセキュリティレベルが低く、EIP およびネットワークトラフィックに対して課金が発生します。

  • VPC ピアリング接続:VPC ピアリング接続を使用して 2 つの VPC を接続し、ACK クラスターが ACR Enterprise Edition インスタンスにアクセスできるようにします。このサービスは、VPC が同一リージョン内にある場合は無料ですが、異なるリージョンにある場合は課金が発生します。ただし、2 つの VPC の CIDR ブロックは重複してはなりません。VPC の CIDR ブロックに大きな重複がある場合は、既存のネットワークアーキテクチャを変更する必要があります。

  • Cloud Enterprise Network 接続:Cloud Enterprise Network インスタンスには 1 つ以上のトランジットルーターを含めることができます。リージョン間接続を使用して複数のトランジットルーターを接続することで、リージョン間およびアカウント間の VPC 通信を有効化できます。

VPC ピアリング接続と Cloud Enterprise Network の比較については、「Cloud Enterprise Network と VPC ピアリング接続の違い

項目

パブリックネットワーク接続

VPC ピアリング接続

Cloud Enterprise Network

ネットワークタイプ

パブリックネットワーク

プライベートネットワーク

プライベートネットワーク

課金

EIP の課金に基づいて課金が発生します。

  • ACK クラスターと ACR Enterprise Edition インスタンスの VPC が同一リージョン内にある場合は、課金は発生しません。

  • VPC が異なるリージョンにある場合は、Cloud Data Transfer (CDT) によるアウトバウンドトラフィックの課金が発生します。

Cloud Enterprise Network の課金ルールに基づいて課金が発生します。

主な特徴

既存のネットワークアーキテクチャを変更する必要はありません。セキュリティのために、インバウンドおよびアウトバウンドルール、アクセス制御ポリシーを構成する必要があります。

  • プライベートネットワーク経由でイメージを転送するため、セキュリティレベルが高くなります。VPC が同一リージョン内にある場合は、課金は発生しません。

  • 2 つの VPC の CIDR ブロックは重複してはなりません。大きな重複がある場合は、既存のネットワークアーキテクチャを変更する必要があります。

  • プライベートネットワーク経由でイメージを転送するため、セキュリティレベルが高くなります。

  • Cloud Enterprise Network は、高いセキュリティ要件を持つ企業の本番環境向けに設計されています。

構成手順

  1. ACR インスタンスのパブリックエンドポイントの構成

    パブリックアクセス制御ポリシーを構成して、ACR Enterprise Edition インスタンスをリモートから安全に管理およびアクセスします。
  2. ACK クラスターのパブリックネットワークアクセスの有効化

    ACK クラスターが外部のパブリックリソースにアクセスし、ACR Enterprise Edition インスタンスからイメージをプルできるように構成します。
  1. ACR インスタンスの非公開ドメイン名の名前解決を有効化する

    ACR Enterprise Edition インスタンスを VPC に接続後、VPC 内からプライベートドメイン名を使用してインスタンスにアクセスできます。構成後、VPC ID および ACR Enterprise Edition インスタンスのプライベート IP アドレスを取得します。
  2. ACR インスタンスに関連するドメイン名および IP アドレスの取得

    ACR Enterprise Edition インスタンスにアクセスするために使用される認証サービスおよび関連 OSS バケットのドメイン名と IP アドレスを取得します。
  3. VPC ピアリング接続の作成およびルートテーブルの構成

    VPC ピアリング接続の両端に、ピア VPC を指すルートを追加して、ACK クラスターの VPC と ACR Enterprise Edition インスタンスの VPC 間でプライベート通信を有効化する必要があります。ピアリング接続の ACK クラスター側では、認証サービスの IP アドレスおよび関連 OSS バケットの IP アドレスへのルートも構成する必要があります。
  4. ACK クラスターでの ACR インスタンスドメイン名の DNS 名前解決の構成

    プライベート DNS レコードの追加ノードプールのカスタムデータスクリプトを使用して /etc/hosts ファイルを一括で変更するなどの方法で、ACK クラスターが ACR インスタンスのドメイン名をそのプライベート IP アドレスに名前解決できるようにします。これにより、トラフィックは VPC ピアリング接続のルート経由で ACR インスタンスの VPC に転送されます。
  1. ACR インスタンスの非公開ドメイン名の名前解決を有効化する

    ACR Enterprise Edition インスタンスを VPC に接続後、VPC 内からプライベートドメイン名を使用してインスタンスにアクセスできます。構成後、VPC ID および ACR Enterprise Edition インスタンスのプライベート IP アドレスを取得します。
  2. ACR インスタンスに関連するドメイン名および IP アドレスの取得

    ACR Enterprise Edition インスタンスにアクセスするために使用される認証サービスおよび関連 OSS バケットのドメイン名と IP アドレスを取得します。
  3. CEN を使用したクロスアカウント VPC 通信の構成

    ACR Enterprise Edition インスタンスの VPC をそのリージョンのトランジットルーターに接続します。ACK クラスターの VPC をそのリージョンのトランジットルーターに接続します。その後、リージョン間接続を使用して 2 つのトランジットルーターを接続します。
  4. VPC およびトランジットルーターのルートテーブルの構成

    ACK クラスターの VPC およびトランジットルーターに対して、認証サービスの IP アドレスおよび関連 OSS バケットの IP アドレスへのルートも構成する必要があります。
  5. ACK クラスターでの ACR インスタンスドメイン名の DNS 名前解決の構成

    プライベート DNS レコードの追加ノードプールのカスタムデータスクリプトを使用して /etc/hosts ファイルを一括で変更するなどの方法で、ACK クラスターが ACR インスタンスのドメイン名をそのプライベート IP アドレスに名前解決できるようにします。これにより、トラフィックは CEN のルート経由で ACR インスタンスの VPC に転送されます。

ステップ 2:権限付与およびパスワードレスコンポーネントの構成

以下の 3 つの権限付与方法により、アカウント間でパスワードレスイメージプルが可能になります。要件に最も適した方法を選択してください。

項目

RRSA

Worker RAM ロール

RAM ユーザー AccessKey

サポートされるクラスタータイプ

ACK Basic マネージドクラスターACK Pro マネージドクラスターACK Edge クラスター、および ACK Serverless Pro クラスター(Kubernetes 1.22 以降)をサポートします。

ACK Basic マネージドクラスターACK Pro マネージドクラスター、および ACK 専用クラスター(Kubernetes 1.20 以降)をサポートします。

ACK Basic マネージドクラスターACK Pro マネージドクラスター、および ACK 専用クラスター(Kubernetes 1.20 以降)をサポートします。

サポートされるコンポーネント

  • aliyun-acr-credential-helper (マネージド) アドオン

  • aliyun-acr-credential-helper コンポーネント

    v23.02.06.1-74e2172-aliyun 以降にアップグレードする必要があります。

これらのコンポーネントの違いについては、「パスワードレスコンポーネントの比較」をご参照ください。

aliyun-acr-credential-helper コンポーネント

aliyun-acr-credential-helper コンポーネント

権限の粒度

Pod レベル (詳細)

クラスターレベル (中程度)

アカウントレベル (粗い)

セキュリティ

高。詳細な権限制御と隔離を提供します。AccessKey ID および AccessKey Secret ペアをハードコーディングせず、セキュリティトークンサービス (STS) の一時的な認証情報を使用します。

中。すべての Pod が同じ権限を共有するため、過剰な権限のリスクがあります。

低。AccessKey 漏洩のリスクが高くなります。

ユースケース

厳格な権限制御が必要なセキュリティに敏感なサービスおよび本番環境に適しています。

統一された権限が必要なシナリオや、中程度の権限制御が必要な開発およびテスト環境に適しています。

迅速なデプロイまたはデモ環境に適しています。

RRSA

A アカウント の ACK クラスター内で、特定の ServiceAccount を構成して B アカウント の RAM ロール(パスワードレスイメージプル権限付き)を偽装できるようにします。これにより、ACK クラスターが B アカウント のプライベートイメージにアクセスしてプルできるようになります。

説明

パスワードレスコンポーネントで RRSA 機能を有効化するには、まずクラスターに対して RRSA を有効化し、その後パスワードレスコンポーネントに対して RRSA を構成する必要があります。手順を誤って実行した場合は、コンポーネントの Pod を削除して RRSA 機能を有効化し直す必要があります。

  1. A アカウント で、ACK クラスターの RRSA 機能を有効化し、ロールを偽装する権限を持つ RAM ロールを作成します。

    1. ACK クラスターの RRSA 機能を有効化します。

      1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

      2. [クラスターリスト] ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。

      3. [基本情報] タブの [セキュリティと監査] セクションで、[RRSA OIDC] の横にある [有効にする] をクリックします。image

      4. [RRSA の有効化] ダイアログボックスで、[OK] をクリックします。

        [基本情報] セクションで、クラスターのステータスが [更新中] から [実行中] に変化するまで待ちます。ステータスが [実行中] になったら、RRSA が有効化されています。

      5. クラスターの RRSA が有効化されたら、[基本情報] タブの [セキュリティと監査] セクションで、RRSA OIDC の右側にある [有効] にカーソルを合わせて、OIDC プロバイダーの URL および ARN を確認します。image

    2. 次の JSON を使用して信頼ポリシーを編集し、OIDC プロバイダー用の RAM ロールを作成します。

      • <oidc_issuer_url> を、前のステップで取得したクラスターの OIDC プロバイダー URL に置き換えます。

      • <oidc_provider_arn> を、前のステップで取得したクラスターの OIDC プロバイダー ARN に置き換えます。

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Condition": {
              "StringEquals": {
                "oidc:aud": "sts.aliyuncs.com",
                "oidc:iss": "<oidc_issuer_url>",
                "oidc:sub": "system:serviceaccount:kube-system:aliyun-acr-credential-helper"
              }
            },
            "Effect": "Allow",
            "Principal": {
              "Federated": [
                "<oidc_provider_arn>"
              ]
            }
          }
        ],
        "Version": "1"
      }
    3. AliyunSTSAssumeRoleAccess ポリシーを RAM ロールにアタッチして、他のロールを偽装する権限を付与し、RAM ロールの ARN を記録します。詳細については、「RAM ロールへの権限付与」をご参照ください。

      1. RAM ロールの詳細ページで、[権限付与] タブをクリックし、[新規権限] をクリックします。

      2. [新規権限] パネルの [ポリシー] セクションで、[AliyunSTSAssumeRoleAccess] ポリシーを検索して選択し、[Grant permissions] をクリックします。

      3. RAM ロールの詳細ページで、[基本情報] セクションに移動して RAM ロールの ARN を確認し、記録します。詳細については、「RAM ロールの ARN の確認」をご参照ください。

  2. B アカウント で、RAM ロールを作成し、プライベートイメージをプルする権限を付与するとともに、A アカウント の RAM ロールがこのロールを偽装できるように信頼ポリシーを構成します。

    1. 信頼済み Alibaba Cloud アカウント用の RAM ロールを作成し、次の JSON を使用して信頼ポリシーを編集します。これにより、A アカウント の RAM ロールがこのロールを偽装できるようになります。

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "RAM": [
                "<ARN of the RAM role created in Account A>"
              ]
            }
          }
        ],
        "Version": "1"
      }
    2. 次の内容のカスタムポリシーを作成し、RAM ロールにポリシーをアタッチして、インスタンス情報の取得およびイメージのプル権限を付与します。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "cr:GetAuthorizationToken",
                      "cr:ListInstanceEndpoint",
                      "cr:PullRepository"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }
    3. RAM ロールの最大セッション期間を 3,600 秒~43,200 秒の範囲で設定します。デフォルト値は 3,600 秒です。

      後述のコンポーネント構成の expireDuration パラメーターと同じ値に設定することを推奨します。expireDuration の値は、最大セッション期間を超えることはできません。
    4. RAM ロールの詳細ページで、[基本情報] セクションに移動して RAM ロールの ARN を確認し、記録します。

  3. A アカウント で、ACK クラスターのパスワードレスコンポーネントをインストールし、構成を変更します。

    以下のコンポーネントの違いについては、「パスワードレスコンポーネントの比較」をご参照ください。

    マネージド アドオン

    1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

    2. [クラスターリスト] ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、[アドオン管理] をクリックします。

    3. [アドオン管理] ページで、[セキュリティ] タブをクリックし、[aliyun-acr-credential-helper (マネージド)] カードを検索して、[インストール] をクリックします。

    4. [パラメーター] ダイアログボックスで、[RRSA を有効化] を選択し、[追加] をクリックして、以下のパラメーターを入力し、[OK] をクリックします。

      791184c653f445f62c3387d88ad8bdcf

      関連付けられた ACR Enterprise Edition インスタンスの構成:

      パラメーター

      説明

      instanceId

      ACR Enterprise Edition インスタンスの ID です。複数の ID を指定する場合は、カンマ (,) で区切ります。

      cri-XXXXX

      regionId

      ACR Enterprise Edition インスタンスのリージョン ID です。

      cn-hangzhou

      domains

      ACR インスタンスのアクセスドメイン名(パブリックおよび VPC)です。複数のドメイン名を指定する場合は、カンマ (,) で区切ります。

      XXXXX-registry.cn-hangzhou.cr.aliyuncs.com

      assumeRoleARN

      ACR インスタンスの所有者に属する RAM ロールの ARN です。B アカウント で作成した RAM ロールの ARN を入力します。

      acs:ram::100XXXXXXXX9630:role/XXXX

      expireDuration

      クロスアカウントアクセスの一時認証情報の有効期間です。B アカウント で作成した RAM ロールの最大セッション期間を入力します。

      3600

      rrsaRoleARN

      ACK クラスターの所有者に属する RAM ロールの ARN です。A アカウント で作成した RAM ロールの ARN を入力します。

      acs:ram::128XXXXXXXXXX09011:role/XXXX

      rrsaOIDCProviderRoleARN

      ACK クラスターの OIDC プロバイダーの ARN です。A アカウント の ACK クラスターの RRSA 機能の OIDC プロバイダー ARN を入力します。

      acs:ram::128XXXXXXXXXX09011:oidc-provider/ack-rrsa-c8864XXXXXXXXXXXXXXXXXX99356a636

      その他のパラメーターについては、「コンポーネント構成」をご参照ください。

    コンポーネント

    1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

    2. [クラスターリスト] ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、[アドオン管理] をクリックします。

    3. [アドオン管理] ページで、[セキュリティ] タブをクリックし、[aliyun-acr-credential-helper] コンポーネントを検索して、[インストール] をクリックします。表示されたダイアログボックスで、tokenModeauto に設定し、[OK] をクリックします。

      04479cf3d9857845bf530ea2f0850a60

    4. パスワードレスコンポーネントの ConfigMap を変更します。

      1. 左側のナビゲーションウィンドウで、[設定 > ConfigMap] を選択します。

      2. [ConfigMap] ページの上部にある [名前空間] ドロップダウンリストで [kube-system] を選択します。次に、[acr-configuration] を検索して、[操作] 列の [YAML の編集] をクリックします。以下の例に基づいて構成を変更します。

        data:
          service-account: "default"
          watch-namespace: "all"
          expiring-threshold: "15m"
          notify-email: "c*@example.com"
          acr-registry-info: |
            - instanceId: "cri-xxx"                                   # ACR Enterprise Edition インスタンスの ID。
              regionId: "cn-hangzhou"                                 # ACR Enterprise Edition インスタンスのリージョン ID。
              domains: "xxxxx-registry.cn-hangzhou.cr.aliyuncs.com"   # ACR Enterprise Edition インスタンスのアクセスドメイン名。
              rrsaRoleARN: "<ARN of the RAM role created in Account A>"
              rrsaOIDCProviderRoleARN: "<OIDC provider ARN from the Basic Information page of the cluster in the ACK console for Account A>"
              assumeRoleARN: "<ARN of the RAM role created in Account B>"
              expireDuration: 3600                                    # B アカウントの RAM ロールの最大セッション期間。デフォルト値は 3600 です。
          rrsa: |
            enable: true                                              # パスワードレスコンポーネントの RRSA 機能を有効化します。

Worker RAM ロール

A アカウント の ACK クラスター内で、クラスターのデフォルト Worker RAM ロールを構成して B アカウント の RAM ロール(パスワードレスイメージプル権限付き)を偽装できるようにします。これにより、ACK クラスターが B アカウント のプライベートイメージにアクセスしてプルできるようになります。

  1. A アカウント で、クラスターの Worker RAM ロールを確認し、他のロールを偽装する権限を付与します。

    1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

    2. [クラスターリスト] ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。

    3. [Cluster Information] ページで、[基本情報] タブをクリックします。[クラスターリソース] セクションで、[Worker RAM ロール] の右側にあるリンクをクリックします。

    4. AliyunSTSAssumeRoleAccess ポリシーを RAM ロールにアタッチして、他のロールを偽装する権限を付与し、RAM ロールの ARN を記録します。詳細については、「RAM ロールへの権限付与」をご参照ください。

      1. RAM ロールの詳細ページで、[権限付与] タブをクリックし、[新規権限] をクリックします。

      2. [新規権限] パネルの [ポリシー] セクションで、[AliyunSTSAssumeRoleAccess] ポリシーを検索して選択し、[Grant permissions] をクリックします。

      3. RAM ロールの詳細ページで、[基本情報] セクションに移動して RAM ロールの ARN を確認し、記録します。詳細については、「RAM ロールの ARN の確認」をご参照ください。

  2. B アカウント で、RAM ロールを作成し、プライベートイメージをプルする権限を付与するとともに、A アカウント の ACK クラスターの Worker RAM ロールがこのロールを偽装できるように信頼ポリシーを構成します。

    1. 信頼済み Alibaba Cloud アカウント用の RAM ロールを作成します。

    2. 次の内容のカスタムポリシーを作成し、RAM ロールにポリシーをアタッチして、インスタンス情報の取得およびイメージのプル権限を付与します。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "cr:GetAuthorizationToken",
                      "cr:ListInstanceEndpoint",
                      "cr:PullRepository"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }
    3. RAM ロールの詳細ページで、[トラスト規則] タブをクリックし、次の内容で [編集トラスト規則] を実行します。これにより、A アカウント の ACK クラスターの Worker RAM ロールが B アカウント の RAM ロールを偽装できるようになります。

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "RAM": [
                "<ARN of the role created in Account A>"
              ]
            }
          }
        ],
        "Version": "1"
      }
    4. RAM ロールの詳細ページで、[基本情報] セクションに移動して RAM ロールの ARN を確認し、記録します。詳細については、「RAM ロールの ARN の確認」をご参照ください。

  3. A アカウント で、ACK クラスターのパスワードレスコンポーネントをインストールし、構成を変更します。

    1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

    2. [クラスターリスト] ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、[アドオン管理] をクリックします。

    3. [アドオン管理] ページで、[セキュリティ] タブをクリックし、[aliyun-acr-credential-helper] コンポーネントを検索して、[インストール] をクリックします。表示されたダイアログボックスで、tokenModeworkerRole に設定し、[OK] をクリックします。

      100f8cde3395436575996fbbd290dc56

    4. パスワードレスコンポーネントの ConfigMap を変更します。

      1. 左側のナビゲーションウィンドウで、[設定 > ConfigMap] を選択します。

      2. [ConfigMap] ページの上部にある [名前空間] ドロップダウンリストで [kube-system] を選択します。次に、[acr-configuration] を検索して、[操作] 列の [YAML の編集] をクリックします。以下の例に基づいて構成を変更します。

        data:
            service-account: "default"
            watch-namespace: "all"
            expiring-threshold: "15m"
            notify-email: "c*@example.com"
            acr-registry-info: |
              - instanceId: "cri-xxx"                                    # ACR Enterprise Edition インスタンスの ID。
                regionId: "cn-hangzhou"                                  # ACR Enterprise Edition インスタンスのリージョン ID。
                domains: "xxxxx-registry.cn-hangzhou.cr.aliyuncs.com"    # ACR Enterprise Edition インスタンスのアクセスドメイン名。
                assumeRoleARN: "<ARN of the RAM role created in Account B>"
                expireDuration: 3600                                     # B アカウントの RAM ロールの最大セッション期間。デフォルト値は 3600 です。

RAM ユーザー AccessKey

A アカウント の ACK クラスター内で、パスワードレスコンポーネントに B アカウント の RAM ユーザーの AccessKey ID および AccessKey Secret を保存して、B アカウント のプライベートイメージをプルします。この方法は構成が簡単ですが、AccessKey ペアがプレーンテキストで保存されるため、認証情報漏洩のセキュリティリスクがあります。

  1. B アカウント で、RAM ユーザーを作成し、必要な cr.* 権限が付与されていることを確認します。

    1. RAM ユーザーの作成を行います。

    2. 次の内容のカスタムポリシーを作成し、RAM ユーザーにポリシーをアタッチして、インスタンス情報の取得およびイメージのプル権限を付与します。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "cr:GetAuthorizationToken",
                      "cr:ListInstanceEndpoint",
                      "cr:PullRepository"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }
    3. AccessKey ペアを作成し、AccessKey ID および AccessKey Secret を記録します。

  2. A アカウント で、ACK クラスターのパスワードレスコンポーネントをインストールし、構成を変更します。

    1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

    2. [クラスターリスト] ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。

    3. [クラスターリスト] ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、[アドオン管理] をクリックします。

    4. [アドオン管理] ページで、[セキュリティ] タブをクリックし、[aliyun-acr-credential-helper] コンポーネントを検索して、[インストール] をクリックします。表示されたダイアログボックスで、tokenModeauto に設定し、[OK] をクリックします。

      04479cf3d9857845bf530ea2f0850a60

    5. パスワードレスコンポーネントの ConfigMap を変更します。

      1. 左側のナビゲーションウィンドウで、[設定 > ConfigMap] を選択します。

      2. [ConfigMap] ページの上部にある [名前空間] ドロップダウンリストで [kube-system] を選択します。次に、[acr-configuration] を検索して、[操作] 列の [YAML の編集] をクリックします。以下の例に基づいて構成を変更します。

      3. data:
            service-account: "default"
            watch-namespace: "all"
            expiring-threshold: "15m"
            notify-email: "c*@example.com"
            acr-registry-info: |
              - instanceId: ""                        # ACR Enterprise Edition インスタンスの ID。
                regionId: "cn-hangzhou"               # ACR Enterprise Edition インスタンスのリージョン ID。
                customAccessKey: "xxxxx"              # B アカウントの RAM ユーザーの AccessKey ID。
                customAccessKeySecret: "xxxxxx"       # B アカウントの RAM ユーザーの AccessKey Secret。

ステップ 3:クロスアカウントイメージプルの検証

説明

検証手順はデモンストレーション目的のものです。詳細な手順については、「イメージのビルド」および「ワークロードの作成」をご参照ください。

  1. B アカウント の ACR Enterprise Edition インスタンスで、必要に応じてコンテナイメージの [インターネット] または [VPC] アドレスを取得します。

    image

  2. A アカウント の ACK クラスターで、[ワークロード > 展開] を選択し、コンテナイメージを使用してワークロードを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment-basic
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: ******.cn-hangzhou.cr.aliyuncs.com/instance/instancetest:v1 # B アカウントの ACR イメージのアドレスを指定します。
            ports:
            - containerPort: 80
  3. ワークロードの Pod イベントに、Successfully pulled image "XXX" in XXXs (XXXs including waiting). Image size: XXX bytes. に類似したメッセージが含まれている場合、パスワードレスコンポーネントがアカウント間でイメージを正常にプルできたことを示します。

    ecb56ef14d98a537ebe64f6bd9fd883d

よくある質問

100.0.0.0/8 CIDR ブロックの IP 競合

認証および OSS ドメインの IP アドレスは 100.0.0.0/8 CIDR ブロックに解決されます。内部ネットワークでもこの範囲を使用している場合、IP アドレスの競合が発生します。

認証ドメイン名の競合

認証ドメインのインスタンス取り込み機能を有効化することで、認証ドメインの競合を解消できます。これにより、インスタンスドメイン名のみを使用してサービスにアクセスできるようになります。

  1. [Container Registry コンソール] にログインします。

  2. 上部のナビゲーションバーで、リージョンを選択します。

  3. [インスタンス] ページで、管理対象の Enterprise Edition インスタンスをクリックします。

  4. インスタンス管理ページの左側ナビゲーションウィンドウで、[リポジトリ > ドメイン] を選択します。[ドメイン] ページで、[認証ドメイン名をインスタンスに引き継ぐ] スイッチをオンにします。

    重要

    認証ドメインのインスタンス取り込み機能を使用するには、Enterprise Edition インスタンスをホワイトリストに追加するために、チケットを送信する必要があります。

  5. [認証ドメイン名のインスタンスへの引き継ぎを有効にする] ダイアログボックス、[OK] をクリックします。

OSS ドメイン名の競合

PrivateLink を使用してプライベートネットワーク経由で OSS リソースにアクセスし、CNAME レコードを使用して OSS ドメイン名を PrivateLink ドメイン名にポイントできます。