ソースコードや依存関係 (Maven リポジトリなど) が Virtual Private Cloud (VPC) またはプライベートデータセンター内にある場合、パブリックインターネット経由でトラフィックをルーティングせずにコンテナイメージをビルドする方法が必要です。Container Registry Enterprise Edition は VPC ベースのイメージビルドをサポートしており、プライベート GitLab リポジトリや内部サービスにプライベートネットワーク接続を介して完全にアクセスできます。
前提条件
開始する前に、次のことを確認してください。
Container Registry Enterprise Edition インスタンスがあること。詳細については、「Container Registry Enterprise Edition インスタンスを使用したイメージのプッシュとプル」をご参照ください。
Container Registry Enterprise Edition インスタンスと同じリージョンの VPC またはデータセンターに自己管理型 GitLab サービスがあること。
GitLab に Elastic Compute Service (ECS) インスタンスの IP アドレスを介してアクセスする場合、
100.104.0.0/16からのトラフィックを許可するインバウンドルールを ECS セキュリティグループに追加してください。GitLab が Server Load Balancer (SLB) 経由でアクセスされる場合、追加のセキュリティグループ構成は不要です。
GitLab サービスまたは VPC ベースのサービスが Express Connect 経由で接続されたデータセンターにある場合:
データセンターの CIDR ブロックは、
100.104.0.0/16と重複してはなりません。仮想ボーダールータ (VBR) およびデータセンターのルーターで、
100.104.0.0/16の戻りルートを設定します。詳細については、「Express Connectとは」および「VBR」をご参照ください。
VPC モードをサポートするゾーンに作成された VPC と vSwitch があること。次の表にサポートされているゾーンを示します。
サポートされているゾーン
| クラウドタイプ | リージョン | ゾーン |
|---|---|---|
| Alibaba Cloud パブリッククラウド | 中国 (北京) | cn-beijing-c, cn-beijing-d, cn-beijing-e, cn-beijing-f, cn-beijing-g, cn-beijing-h, cn-beijing-i, cn-beijing-j, cn-beijing-k |
| 中国 (杭州) | cn-hangzhou-e, cn-hangzhou-f, cn-hangzhou-g, cn-hangzhou-h, cn-hangzhou-i, cn-hangzhou-j, cn-hangzhou-k | |
| 中国 (深セン) | cn-shenzhen-a, cn-shenzhen-b, cn-shenzhen-c, cn-shenzhen-d, cn-shenzhen-e, cn-shenzhen-f | |
| 中国 (上海) | cn-shanghai-a, cn-shanghai-b, cn-shanghai-c, cn-shanghai-d, cn-shanghai-e, cn-shanghai-f, cn-shanghai-g, cn-shanghai-i | |
| 中国 (張家口) | cn-zhangjiakou-a, cn-zhangjiakou-b, cn-zhangjiakou-c | |
| 中国 (香港) | cn-hongkong-b, cn-hongkong-c, cn-hongkong-d | |
| シンガポール | ap-southeast-1a, ap-southeast-1b, ap-southeast-1c | |
| インドネシア (ジャカルタ) | ap-southeast-5a, ap-southeast-5b | |
| 米国 (バージニア) | us-east-1a, us-east-1b | |
| 米国 (シリコンバレー) | us-west-1a, us-west-1b | |
| イギリス (ロンドン) | eu-west-1a, eu-west-1b | |
| ドイツ (フランクフルト) | eu-central-1a, eu-central-1b | |
| 日本 (東京) | ap-northeast-1a, ap-northeast-1b | |
| 中国 (成都) | cn-chengdu-a, cn-chengdu-b | |
| 中国 (河源) | cn-heyuan-a, cn-heyuan-b | |
| Finance Cloud | 中国 (杭州) | cn-hangzhou-finance-h, cn-hangzhou-finance-i, cn-hangzhou-finance-j, cn-hangzhou-finance-k |
仕組み
VPC ベースのソースコードリポジトリをバインドすると、Container Registry は ECS API オペレーションを呼び出してマネージドセキュリティグループを作成します。このセキュリティグループは、Container Registry サービスが自己管理型 GitLab インスタンスに到達するためのネットワークパスを提供します。その後、Container Registry はご利用の vSwitch 上の Elastic Network Interface (ENI) を Container Registry Enterprise Edition インスタンスにバインドし、接続を完了します。
マネージドセキュリティグループは Container Registry によって完全に制御されます。表示することはできますが、変更することはできません。すべてのインバウンドトラフィックを拒否し、ご利用の GitLab サービスと Maven リポジトリのプライベートエンドポイントへのアウトバウンドトラフィックのみを許可します。
ステップ 1: VPC リンクの作成
Container Registry コンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
「[インスタンス]」ページで、対象の Container Registry Enterprise Edition インスタンスのカードをクリックします。
[概要] ページで、[リポジトリ] > [コードソース] を選択します。
「コード ソース」ページで GitLab を見つけ、「操作」列の「リンクの管理」をクリックします。
[リンクの管理] ダイアログボックスで、以下のパラメーターを設定し、[作成] をクリックします。
パラメーター 説明 例 GitLab サーバーのプライベート IP アドレス 自己管理型 GitLab ソースコードリポジトリのプライベート IP アドレス 192.168.1.10許可する必要があるその他の IP アドレス アウトバウンドアクセスを許可する追加の VPC プライベートエンドポイント (Maven リポジトリなど) 192.168.1.20既存の VPC 前提条件で作成された VPC vpc-bp1xxxxxxxxxxvSwitch 前提条件で作成された vSwitch vsw-bp1xxxxxxxxxx
ステップ 2: GitLab ソースコードリポジトリのバインド
[コード ソース] ページで GitLab を見つけ、[アカウントのバインド] を [操作] 列でクリックします。
[Private GitLab] ダイアログボックスで、次のパラメーターを設定し、[確認] をクリックします。
パラメーター 説明 例 ネットワークタイプ [VPC] — リンク情報 ステップ 1 で作成された VPC リンク — エンドポイント GitLab サービスのログイン URL。自己管理型 GitLab インスタンスには非公開 URL を使用し、公開 GitLab サービスには公開 URL を使用します。 http://192.168.1.10ユーザー名 ご利用の GitLab ユーザー名 aliceプライベートトークン ご利用の GitLab アクセストークン。作成方法については、「ソースコードホスティングプラットフォームのバインド」をご参照ください。 —
GitLab の [ステータス] 列に [バインド済み] が表示されると、リポジトリは Container Registry Enterprise Edition インスタンスに正常に接続されています。
ステップ 3: VPC でのイメージのビルド
ビルドタスクを送信する前に、[中国本土以外にデプロイされたサーバーでビルド] をクリアします。このオプションを選択したままにすると、ビルドに中国本土以外のサーバーが使用され、ご利用の VPC リソースに到達できません。
GitLab リポジトリがバインドされたら、イメージビルドをトリガーします。フルビルドワークフローの詳細については、「Container Registry Enterprise Edition インスタンスを使用したイメージのビルド」をご参照ください。