Harbor のリモートレプリケーションを使用して、セルフマネージド Harbor レジストリから Container Registry (ACR) Enterprise Edition インスタンスへの一方向イメージレプリケーションを実行します。コンテナイメージレジストリのジオディザスタリカバリ用に、カスタムドメイン名を追加します。
Harbor のリモートレプリケーション機能を使用したくない場合、またはレプリケーション速度が重要な場合は、「セルフマネージド Harbor を ACR Enterprise Edition に移行する」をご参照ください。
前提条件
ACR Enterprise Edition インスタンスが作成されていること。詳細については、「Enterprise Edition インスタンスを作成する」をご参照ください。
操作手順
Harbor イメージの Enterprise Edition インスタンスへのレプリケーション
Harbor レジストリがオンプレミスデータセンターにデプロイされている場合は、まずデータセンターを Alibaba Cloud の VPC に接続する必要があります。詳細については、「リージョン間またはデータセンターから Enterprise Edition インスタンスにアクセスする」をご参照ください。
ステップ 1: 名前空間の作成
Container Registry コンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
インスタンス ページで、目的のエンタープライズ版インスタンスをクリックします。
エンタープライズ版インスタンスの管理ページで、 を選択します。
名前空間 ページで、名前空間を作成 をクリックします。
名前空間を作成 サイドバーで、名前空間 名を指定し、リポジトリの自動作成 で オン または 閉じる を選択します。次に、OK をクリックします。
パラメーター
説明
[名前空間]
レプリケートする Harbor プロジェクトの名前 (例: test-project) を入力します。
[リポジトリの自動作成]
オン を選択します。
説明閉じる を選択した場合、イメージをレプリケートする前に、名前空間に対応するリポジトリを作成する必要があります。
ステップ 2: Harbor での送信先リポジトリの設定
Harbor にログインします。
左側のナビゲーションペインで、 を選択します。
[レジストリ] ページで、[新規エンドポイント] をクリックします。
[New Registry Endpoint] ダイアログボックスで、次の表に示すパラメーターを設定します。
パラメーター
説明
Provider
Docker Registry を選択します。
Name
新しいエンドポイントの名前を入力します。
[説明]
新しいエンドポイントの説明を入力します。
Endpoint URL
Enterprise Edition インスタンスの送信先リポジトリのエンドポイントを入力し、アクセス制御が有効になっていることを確認します。詳細については、「VPC アクセス制御を設定する」および「インターネットアクセスを設定する」をご参照ください。
VPC:
例:
https://<Enterprise Edition インスタンスの名前>-registry-vpc.cn-qingdao.cr.aliyuncs.comインターネット:
例:
https://<Enterprise Edition インスタンスの名前>-registry.cn-qingdao.cr.aliyuncs.com
Access ID
送信先リポジトリのログイン名 (Alibaba Cloud アカウント名) を入力します。
Access Secret
送信先リポジトリへのアクセスに使用するパスワードを入力します。詳細については、「固定パスワードを使用する」をご参照ください。
リモート証明書の検証 チェックボックスを選択し、[接続テスト] をクリックします。 接続テストに成功しました というメッセージが表示された場合、入力したパラメーターは有効です。 [OK] をクリックします。
ステップ 3: レプリケーションルールの設定
Harbor にログインします。
左側メニューで、[Administration] > [Replications] の順に移動します。
[Replications] ページで [NEW REPLICATION RULE] をクリックします。
新規レプリケーションルールダイアログボックスで、次の表で説明されているパラメーターを設定し、保存 をクリックします。
パラメーター
説明
[名前]
レプリケーションルールの名前を入力します。
[説明]
レプリケーションルールの説明を入力します。
Replication mode
[Push-based] を選択します。
Source resource filter
Harbor UI の案内に従って、レプリケートするリソースをフィルタリングします。デフォルトでは、すべてのリソースがレプリケートされます。
Destination registry
ステップ 2 で作成したエンドポイントを選択します。
Destination
[Namespace] フィールドに、ステップ 1 で Enterprise Edition インスタンスに作成した名前空間を入力します。[Flattening] は、レプリケーション中にリポジトリ階層を削減します。[Flatten 1 Level] を選択します。例:
harbor-project/nginx -> acr-ns/nginx[トリガーモード]
トリガーモードを指定します。Harbor のイメージの変更を同期するには、イベント駆動 を選択します。
[{value, select, EccStatus {リンク状態} ApplicationStatus {申請状況} PeerCity {IDCのある都市} PeerLocation {IDCアドレス} IdcSP {IDCオペレーター} PortType {IDCポートタイプ} AccessPointId {アクセスポイント} Bandwidth {帯域幅} PortSpecification {ポート仕様} Distance {距離} GmtCreate {作成時間 RoomLocation {部屋の場所} ContactTel {電話番号} ContactMail {メールボックス} RedundantEccId {冗長リンク} Region {領域} EstimatedTime {予想時間}other {{value}}}]
レプリケーション中の最大ネットワーク帯域幅を制限します。デフォルト値 [-1] は制限がないことを示します。
[Replications] ページで、前のステップで作成したルールを選択し、[REPLICATE] をクリックして、既存の Harbor イメージを Enterprise Edition インスタンスに手動でレプリケートします。レプリケーションタスクリストには、各タスクのタスク ID、ステータス (成功または失敗)、トリガーモード、および期間が表示されます。タスクのステータスが 成功 に変わると、イメージがレプリケートされます。その後の Harbor リポジトリの変更は、イベントに基づいて Enterprise Edition インスタンスにレプリケートされます。
ジオディザスタリカバリ用のカスタムドメイン名の設定
ACR Enterprise Edition では、インスタンスにカスタムドメイン名と SSL 証明書を追加できます。カスタムドメイン名により、インスタンスへの HTTPS アクセスが可能になります。
ネットワーク環境に応じて、次のディザスタリカバリソリューションのいずれかを選択してください。
ユースケース 1: Harbor が Alibaba Cloud にデプロイされており、アプリケーションがインターネット経由でインスタンスにアクセスする場合
この例では、Enterprise Edition インスタンスは中国 (杭州) リージョンにあり、Harbor レジストリは中国 (張家口) リージョンにあります。両方とも同じカスタムドメイン名を使用し、PrivateZone が設定されています。PrivateZone の設定方法については、「カスタムドメイン名でインスタンスにアクセスする」をご参照ください。
次の表に、2 つのレジストリの基本情報を示します。
インスタンス ID | パブリックエンドポイント | 関連付けられた VPC | カスタムドメイン名 |
ACR-A | a-registry.cn-hangzhou.cr.aliyuncs.com | vpc-aaaaa | cross-region.registry.io |
Harbor-B | - | vpc-bbbbb | cross-region.registry.io |
中国 (張家口) リージョンの Harbor レジストリに障害が発生すると、アプリケーションはイメージをプッシュまたはプルできなくなります。カスタムドメイン名の PrivateZone レコードを変更して、別のリージョンの Enterprise Edition インスタンスから同期されたイメージをプルできるようにします。次の手順を実行します。
Alibaba Cloud DNS コンソールにログインします。
左側のナビゲーションペインで、イントラネットドメイン名の解決 をクリックします。
組み込みの権威 タブで、カスタムドメイン名
cross-region.registry.ioを入力してゾーンを検索すると、2 つのゾーンが返されます。vpc-bbbbbVPC に関連付けられているゾーンをクリックします。[リソースレコード設定] タブで、編集するレコードを見つけ、操作 列の 変更 をクリックします。
Modify Record パネルで、次の表のパラメーターを設定し、OK をクリックします。
パラメーター
説明
[レコードタイプ]
[CNAME] を選択します。
[ホストレコード]
このパラメーターを[@]に設定します。
[レコード値]
このパラメーターを Enterprise Edition インスタンスのパブリックエンドポイント
a-registry.cn-hangzhou.cr.aliyuncs.comに設定します。[TTL ]
デフォルト値を保持します。
ユースケース 2: Harbor が Alibaba Cloud にデプロイされておらず、アプリケーションがインターネット経由でインスタンスにアクセスする場合
Enterprise Edition インスタンスのカスタムドメイン名を、セルフマネージド Harbor レジストリが使用するドメイン名 (www.ha****.com など) に設定します。詳細については、「カスタムドメイン名でインスタンスにアクセスする」をご参照ください。
Harbor レジストリに障害が発生すると、アプリケーションはイメージをプッシュまたはプルできなくなります。DNS 名前解決を変更して、Harbor ドメイン名 (www.harbor.com など) が Enterprise Edition インスタンスのパブリック IP アドレスに解決されるようにします。これにより、アプリケーションはインターネット経由でインスタンスにアクセスし、イメージをプッシュおよびプルできるようになります。
ユースケース 3: Harbor が Alibaba Cloud にデプロイされておらず、アプリケーションが VPC 経由でインスタンスにアクセスする場合
Harbor レジストリに障害が発生すると、アプリケーションはイメージをプッシュまたはプルできなくなります。Enterprise Edition インスタンスの IP アドレスを取得します。Harbor ドメイン名 (www.harbor.com など) がその IP アドレスに解決されるように、ルートと DNS 名前解決を設定します。これにより、アプリケーションは VPC 経由でインスタンスにアクセスし、イメージをプッシュおよびプルできるようになります。詳細については、「リージョン間またはデータセンターから Enterprise Edition インスタンスにアクセスする」をご参照ください。