このトピックでは、Harborのリモートレプリケーション機能を使用して、Harborレジストリ上のイメージをContainer registry Enterprise Editionインスタンスに同期し、コンテナイメージリポジトリのgeoディザスタリカバリを実装する方法について説明します。
Harborのリモートレプリケーション機能を使用してイメージを同期したくない場合、または同期速度の要件が高い場合は、「自己管理のHarborインスタンスからContainer Registry Enterprise Editionに10分以内にイメージを移行する」をご参照ください。
前提条件
Container Registry Enterprise Editionインスタンスが作成されました。 詳細については、「Container Registry Enterprise Editionインスタンスの作成」をご参照ください。
手順
HarborレジストリのイメージをContainer registry Enterprise Editionインスタンスに同期
Harborレジストリがデータセンターにデプロイされている場合、Enterprise Editionインスタンスが存在するVPCを介してHarborレジストリをEnterprise Editionインスタンスに接続する必要があります。 詳細については、「IPアドレスを取得してルーティングルールを設定し、Container Registry Enterprise Editionインスタンスへのアクセスをリージョン間またはデータセンターから実装する」をご参照ください。
手順1: 名前空間の作成
Container Registryコンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
インスタンスページで、イメージを同期するContainer Registry Enterprise Editionインスタンスをクリックします。
Container Registry Enterprise Editionインスタンスの管理ページの左側のナビゲーションウィンドウで、 .
名前空間ページをクリックします。名前空間の作成.
[名前空間の作成] ダイアログボックスで、名前空間、[リポジトリの自動作成] 、および [デフォルトのリポジトリタイプ] パラメーターを設定します。 下表に、各パラメーターを説明します。 次に、[OK] をクリックします。
パラメーター
説明
名前空間
同期するHarborのプロジェクトの名前を入力します。 例: test-project。
リポジトリの自動作成
[リポジトリの自動作成] をオンにします。
説明[リポジトリの自動作成] をオフにした場合、イメージを同期する前に、名前空間にリポジトリを作成する必要があります。
デフォルトのリポジトリ型
リポジトリタイプを選択します。 [プライベート] を選択することを推奨します。
手順2: Harborでの宛先リポジトリの設定
Harborにログインします。
左側のナビゲーションウィンドウで、
を選択します。[レジストリ] ページで、[新しいENDPOINT] をクリックします。
[新しいレジストリエンドポイント] ダイアログボックスで、パラメーターを設定します。 下表に、各パラメーターを説明します。
パラメーター
説明
プロバイダー
ドロップダウンリストから [Docker Registry] を選択します。
名前
新しいエンドポイントの名前を入力します。
説明
新しいエンドポイントの説明を入力します。
エンドポイントURL
Container Registry Enterprise Editionインスタンスの宛先リポジトリのエンドポイントを入力します。 アクセス制御が有効になっていることを確認してください。 詳細については、「VPC ACLの設定」および「インターネットアクセスの設定」をご参照ください。
Container Registry Enterprise EditionインスタンスはVPCにデプロイされています。
宛先リポジトリのエンドポイントの例:
https:// <Container Registry Enterprise Edition instanc e>-registry-vpc.cn-qingdao.cr.aliyuncs.comの名前
Container Registry Enterprise Editionインスタンスはインターネット上にデプロイされています。
宛先リポジトリのエンドポイントの例:
https:// <Container Registry Enterprise Edition instanc e>-registry.cn-qingdao.cr.aliyuncs.comの名前
アクセスID
宛先リポジトリへのアクセスに使用するユーザー名 (Alibaba Cloudアカウント) 。
Access Secret
宛先リポジトリへのアクセスに使用するパスワードを入力します。 詳細については、「パスワードの使用」をご参照ください。
[テスト接続] をクリックします。 接続テスト成功メッセージが表示された場合、入力したパラメーターは有効です。 [OK] をクリックします。
手順3: 同期ルールの設定
Harborにログインします。
左側のナビゲーションウィンドウで、
を選択します。[レプリケーション] ページで、[新しい複製ルール] をクリックします。
[新しいレプリケーションルール] ダイアログボックスで、パラメーターを設定します。 下表に、各パラメーターを説明します。 次に、[保存] をクリックします。
パラメーター
説明
名前
同期ルールの名前を入力します。
説明
同期ルールの説明を入力します。
レプリケーションモード
[プッシュベース] を選択します。
ソースリソースフィルター
画面上の指示に従って、このパラメーターを設定します。 このパラメーターは、同期するリソースをフィルタリングするために使用されます。 [ソースリソースフィルター] セクションの [リソース] パラメーターのデフォルト値は [すべて] です。
宛先レジストリ
ステップ2で設定した宛先リポジトリを選択します。
目的地
[名前空間] フィールドに、Container Registry Enterprise Editionインスタンスの手順1で作成した名前空間を入力します。 フラットニングパラメータは、画像を複製するときにリポジトリの階層を単純化するために使用されます。 [Flatten 1 Level] を選択することを推奨します。 たとえば、Flatten Level 1を選択した後、harbor-project/nginxから
acr-ns/nginx
にイメージをレプリケートできます。トリガーモード
トリガーモードを選択します。 [イベントベース] を選択して、Harborで画像の変更を同期することを推奨します。
帯域幅
同期中の最大ネットワーク帯域幅を制限するには、このパラメーターの値を指定します。 デフォルト値は -1で、最大ネットワーク帯域幅に制限がないことを指定します。
[レプリケーション] ページの [名前] 列で、前の手順で作成したルールを選択し、[複製] をクリックします。 これにより、Harborレジストリ上の既存のイメージがContainer registry Enterprise Editionインスタンスにレプリケートされます。 レプリケーションタスクのステータスが [成功] になると、同期タスクは完了です。 その後のHarborのイメージリポジトリへの変更は、イベントベースのトリガーモードでContainer Registry Enterprise Editionインスタンスに同期されます。
ジオディザスタリカバリを実装するためのカスタムエンドポイントの設定
Container Registry Enterprise Editionは、Container Registry Enterprise EditionインスタンスにカスタムエンドポイントとSSL証明書を追加できるカスタムエンドポイント機能をサポートしています。 これにより、カスタムエンドポイントを使用して、HTTPS経由でContainer Registry Enterprise Editionインスタンスにアクセスできます。
ネットワーク環境に基づいて、次のディザスタリカバリソリューションを使用できます。
解決策1: HarborレジストリがAlibaba Cloudにデプロイされている場合、企業はインターネット経由でContainer registry Enterprise Editionインスタンスにアクセスします
この例では、Container Registry Enterprise Editionインスタンスが中国 (杭州) リージョンにデプロイされ、Harborレジストリが中国 (張家口) リージョンにデプロイされています。 インスタンスのエンドポイントは同じです。 PrivateZoneはインスタンスに設定されています。 PrivateZoneの設定方法については、「カスタムドメイン名を使用してContainer Registry Enterprise Editionインスタンスにアクセスする」をご参照ください。
次の表に、Container Registry Enterprise EditionインスタンスとHarborレジストリの基本情報を示します。
インスタンスID | パブリックエンドポイント | 関連付けられているVPCの名前 | カスタムエンドポイント |
ACR-A | a-registry.cn-hangzhou.cr.aliyuncs.com | vpc-aaaaa | cross-region.registry.io |
ハーバー-B | - | vpc-bbbbb | cross-region.registry.io |
China (Zhangjiakou) リージョンのHarborレジストリに障害が発生し、企業がイメージをレジストリにプッシュしたり、レジストリからイメージをプルしたりできない場合は、カスタムエンドポイントのPrivateZone解像度設定を変更して、Container registry Enterprise Editionインスタンスから同期されたイメージをリージョン間でプルできます。 手順:
Alibaba Cloud DNS コンソールにログインします。
左側のナビゲーションウィンドウで、[PrivateZone] を選択します。
[権限ゾーン] タブで、エンドポイント
cross-region.registry.io
を入力してゾーンを検索します。 2つのゾーンが表示されます。vpc-bbbbb
VPCに関連付けられているゾーンをクリックします。[DNS設定] タブで、変更するレコードを見つけ、[操作] 列の [変更] をクリックします。
[レコードの変更] ダイアログボックスで、パラメーターを設定します。 下表に、各パラメーターを説明します。 [OK] をクリックします。
パラメーター
説明
レコードタイプ
[CNAME] を選択します。
ホスト名
このパラメーターを @ に設定します。
レコード値
このパラメーターをContainer Registry Enterprise Editionインスタンスのパブリックエンドポイント (
a-registry.cn-hangzhou.cr.aliyuncs.com
) に設定します。TTL期間
デフォルト値を保持します。
解決策2: HarborレジストリがAlibaba Cloudにデプロイされていない場合、企業はインターネット経由でContainer registry Enterprise Editionインスタンスにアクセスします。
Container Registry Enterprise EditionインスタンスのカスタムエンドポイントをHarborレジストリのエンドポイントに設定します。 例: www.ha ****.com. 詳細については、「カスタムドメイン名を使用したContainer Registry Enterprise Editionインスタンスへのアクセス」をご参照ください。
セルフマネージドハーバーインスタンスに障害が発生し、ビジネスがインスタンスにイメージをプッシュしたりイメージをプルしたりできない場合は、インスタンスのエンドポイントのDNS解決設定を変更し、インスタンスのエンドポイント (www.harbor.com
など) をContainer Registry Enterprise EditionインスタンスのパブリックIPアドレスに解決できるようにする必要があります。 これにより、企業はインターネット経由でContainer Registry Enterprise Editionインスタンスにアクセスして、イメージをプッシュおよびプルできます。
解決策3: HarborレジストリがAlibaba Cloudにデプロイされていない場合、ビジネスはVPC経由でContainer registry Enterprise Editionインスタンスにアクセスします。
Harborレジストリに障害が発生し、企業がContainer registry Enterprise Editionインスタンスにイメージをプッシュおよびプルできない場合、Container Registry Enterprise EditionインスタンスのIPアドレスを取得し、Harborレジストリのエンドポイント (www.harbor.com
など) をContainer Enterprise Registry EditionインスタンスのIPアドレスに解決できるルーティングルールとDNS解決を設定する必要があります。 これにより、企業はVPC経由でContainer Registry Enterprise Editionインスタンスにアクセスし、イメージをプッシュおよびプルできます。 詳細については、「IPアドレスを取得してルーティングルールを設定し、Container Registry Enterprise Editionインスタンスへのアクセスをリージョン間またはデータセンターから実装する」をご参照ください。