Container Registryを使用すると、異なるAlibaba Cloudアカウントに属するインスタンス間でイメージを複製できます。 クロスアカウントイメージのレプリケーション機能は、すべてのリージョンに適用されます。 手動レプリケーションと自動レプリケーションがサポートされています。
前提条件
ソースインスタンスはAdvanced Editionである必要があります。 ターゲットインスタンスは、 Basic EditionまたはAdvanced Edition。
Container Registry Enterprise EditionインスタンスがBasic Editionの場合、Container Registryコンソールの左側のナビゲーションウィンドウで [インスタンス] をクリックして、Enterprise Editionインスタンスを見つけます。 インスタンスのカードで [アップグレード] をクリックして、インスタンスをAdvanced Editionにアップグレードします。
パブリッククラウドリージョンからAlibaba Finance cloudリージョンやAlibaba Gov cloudリージョンなどの非パブリッククラウドリージョンにイメージをレプリケートすることはできません。
背景情報
インスタンス間で、Alibaba Cloudアカウント間、RAM (Resource Access Management) ユーザー間、およびAlibaba CloudアカウントからRAMユーザー間でイメージをレプリケートできます。
イメージの自動複製
レプリケーションルールを設定して、異なるアカウントに属する2つのインスタンス間でイメージレプリケーションを自動化できます。 イメージをソースインスタンスにアップロードすると、システムは自動的にイメージをターゲットインスタンスにレプリケートします。 この例では、ソースインスタンスはアカウントAに属し、ターゲットインスタンスはアカウントBに属します。
レプリケーションルールの設定後にアップロードされたイメージのみ、異なるアカウントに属するインスタンス間で自動的にレプリケートできます。 既存のイメージはレプリケートできません。
2つのソリューションを使用して既存のイメージを複製できます。
既存のイメージが多数ない場合は、手動でイメージを複製できます。 詳細については、このトピックの「手動でイメージを複製する」セクションと「CreateRepoSyncTask」をご参照ください。
既存のイメージが多数ある場合は、イメージをObject Storage Service (OSS) バケットにレプリケートし、Container Registryイメージをインポートするという組み合わせソリューションを使用することを推奨します。
OSSバケット内のすべてのファイルをContainer RegistryインスタンスのOSSバケットにコピーします。 詳細については、「データレプリケーション」をご参照ください。
インポートルールを作成し、移行元としてOSSバケットを選択し、イメージインポートタスクを開始します。
準備
異なるアカウントに属するインスタンス間でレプリケーションを設定する前に、次の情報を取得する必要があります。
アカウントAとアカウントBのID。
説明アカウントがRAMユーザーの場合、RAMユーザーが属するAlibaba CloudアカウントのIDを取得する必要があります。
ターゲットインスタンスがデプロイされているリージョンと、ターゲットインスタンスのID。
Container Registryコンソールにログインします。 [インスタンス] ページの上部で、リージョンを選択し、ターゲットインスタンスとして使用するEnterprise Editionインスタンスをクリックします。 [概要] ページで、インスタンスのリージョンを確認できます。 インスタンスIDは [インスタンス] セクションでも確認できます。
イメージは、名前空間またはリポジトリによって異なるアカウントに属するインスタンス間で自動的にレプリケートできます。
名前空間でイメージをレプリケートする場合は、ソースインスタンスとターゲットインスタンスにそれぞれ同じ名前の名前空間が必要です。また、ターゲットインスタンスの対応する名前空間に対して自動リポジトリ作成を有効にする必要があります。 名前空間の自動リポジトリ作成を有効にする方法については、「手順4: 名前空間の作成」をご参照ください。
リポジトリごとにイメージをレプリケートする場合、ソースインスタンスとターゲットインスタンスにはそれぞれ同じ名前の名前空間が必要です。また、それぞれの名前空間に同じ名前と構成のリポジトリが必要です。
ステップ1: アカウントAへの権限付与
アカウントBを使用してRAMコンソールにログインし、アカウントBに属するインスタンスにイメージを複製する権限をアカウントAに付与する必要があります。
aliyuncontainerregistrycrossaccoutsyncroleという名前のRAMロールを作成します。
説明RAMロールの名前をaliyuncontainerregistrycrossaccoutsyncroleに設定する必要があります。
アカウントBを使用してRAMコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、[ロールの作成] をクリックします。
ロールタイプの選択ステップで、Select Trusted EntityパラメーターをAlibaba Cloudアカウントをクリックし、次へ.
ロールの設定ステップ、セットRAMロール名パラメータをaliyuncontainerregistrycrossaccoutsyncroleに移動し、OK.
権限ポリシーを作成します。
RAMコンソールの左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、[ポリシーの作成] をクリックします。
[ポリシーの作成] ページで、[JSON] をクリックします。 次のコードブロックで、実際の条件に基づいて
[リソース]
フィールドを設定します。 次に、変更したコードブロックをエディターにコピーし、[次へ] をクリックしてポリシー情報を編集します。{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:CreateSyncRule", "cr:CreateRepositorySync" ], "Resource": "acs:cr:cn-beijing:151356101970****:instance/cri-4im1o411ls8g****" }, { "Effect": "Allow", "Action": [ "cr:CreateSyncRule", "cr:CreateRepositorySync" ], "Resource": "acs:cr:cn-hangzhou:151356101970****:instance/cri-4im1o411ls8gxr****" } ], "Version": "1" }
リソース: アカウントAにアクセスを許可するリソース。 次の形式でリソースを指定します。
acs:cr:<アカウントBの宛先インスタンスがデプロイされているリージョン >:< アカウントBのID>: インスタンス /<アカウントBの宛先インスタンスのID>
説明アカウントBがRAMユーザーの場合、
[リソース]
フィールドで<アカウントBのID>
をRAMユーザーが属するAlibaba CloudアカウントのIDに設定します。
aliyuncontainerregistrycrossaccoutsyncroleロールにポリシーをアタッチします。
ポリシーページで、作成したポリシーを検索し、ポリシーの名前をクリックします。
表示されるページで、[参照] タブをクリックします。 次に、[権限付与] をクリックします。
[権限付与] パネルで、[リソーススコープ] パラメーターを [アカウント] に設定し、[プリンシパル] パラメーターをaliyuncontainerregistrycrossaccoutsyncroleに設定します。 次に、[権限の付与] をクリックします。
閉じる.
aliyuncontainerregistrycrossaccoutsyncroleの信頼ポリシーを変更します。
RAMコンソールの左側のナビゲーションウィンドウで、 .
aliyuncontainerregistrycrossaccoutsyncroleを検索し、検索結果でロール名をクリックします。
信頼ポリシーをクリックし、信頼ポリシーの編集.
サービス
フィールドを実際の条件に基づいて次のコードブロックに追加し、変更したコードブロックをエディターにコピーし、信頼ポリシードキュメントの保存.{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "125287961064****@cr.aliyuncs.com" ] } } ], "Version": "1" }
サービス: 権限を付与するオブジェクト。
<アカウントAのID> @ cr.aliyuncs.com
の形式でサービスを指定します。説明アカウントAがRAMユーザーの場合、
[サービス]
フィールドで<アカウントaのID>
をRAMユーザーが属するAlibaba CloudアカウントのIDに設定します。
手順2: レプリケーションルールの作成
アカウントAを使用して、Container Registryコンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理するEnterprise Editionインスタンスをクリックします。
Enterprise Editionインスタンスの管理ページの左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、[ルールの作成] をクリックします。
[ルールの作成] ウィザードの [インスタンス情報] ステップで、パラメーターを設定し、[次へ] をクリックします。 下表にパラメーターを示します。
パラメーター
説明
ルール名
レプリケーションルールの名前を入力します。
レプリケーションのシナリオ
[レプリケーションシナリオ] を [アカウント] に設定します。
宛先UID
移行先インスタンスが属するアカウントのIDを入力します。
宛先インスタンス
ターゲットインスタンスがデプロイされているリージョンを選択し、ターゲットインスタンスのIDを入力します。
[レプリケーション情報] ステップで、要件に基づいて [レプリケーションレベル] を名前空間またはリポジトリに設定し、名前空間またはリポジトリを選択し、正規表現を入力してイメージタグをフィルター処理します。 次に、[ルールの作成] をクリックします。
Container Registry Enterprise Editionインスタンスの管理ページの左側のナビゲーションウィンドウで、
を選択します。 [レプリケーションレコード] ページで、レプリケーションタスクのステータスが [完了] と表示されます。 イメージがターゲットインスタンスに表示される場合、異なるアカウントに属するインスタンス間の自動レプリケーションは成功します。
画像を手動で複製する
レプリケーションルールを設定して、異なるアカウントに属する2つのインスタンス間でイメージを手動でレプリケートできます。 この例では、ソースインスタンスはアカウントAに属し、ターゲットインスタンスはアカウントBに属します。
アカウントAとアカウントBのID、ターゲットインスタンスがデプロイされているリージョン、およびターゲットインスタンスのIDを取得します。 詳細については、このトピックの準備セクションを参照してください。
アカウントBを使用してRAMコンソールにログインし、アカウントBに属するインスタンスにイメージを複製する権限をアカウントAに付与する必要があります。
Container Registryコンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理するEnterprise Editionインスタンスをクリックします。
Enterprise Editionインスタンスの管理ページの左側のナビゲーションウィンドウで、 を選択します。
表示されるページで、レプリケートするイメージが存在するリポジトリの名前をクリックします。
イメージリポジトリの詳細ページの左側のナビゲーションウィンドウで、[タグ] をクリックします。 表示されるページで、複製する画像を見つけて、画像に対応する [操作] 列の [複製] をクリックします。
[イメージレプリケーション] ダイアログボックスで、[レプリケーションシナリオ] を [クロスアカウント] に設定し、ターゲットインスタンスアカウントのIDを入力します。 ターゲットリポジトリを選択し、ターゲットインスタンスのID、ターゲット名前空間、ターゲットリポジトリ名、イメージタグを入力し、[OK] をクリックします。
Container Registry Enterprise Editionインスタンスの管理ページの左側のナビゲーションウィンドウで、
を選択します。 [レプリケーションレコード] ページで、レプリケーションタスクのステータスが [完了] と表示されます。 イメージがターゲットインスタンスに表示される場合、手動レプリケーションは成功です。
関連ドキュメント
リージョン間で同じアカウントに属するインスタンス間でイメージを複製するには、「同じアカウント内でイメージを複製する」をご参照ください。