AWS Route53によるロケーション対応GitリモートURL
- プラン: Premium、Ultimate
- 提供形態: GitLab Self-Managed
GitLab Geoは、Web UIとAPIトラフィックを含むロケーション対応DNSをサポートしています。この設定は、このドキュメントで説明されているロケーション対応GitリモートURLよりも推奨されます。
GitLabユーザーに、最も近いGeoサイトを自動的に使用する単一のリモートURLを提供できます。これは、ユーザーが移動時に近い方のGeoサイトを利用するために、Git設定を更新する必要がないことを意味します。
これは、Gitプッシュリクエストがセカンダリサイトからプライマリサイトに自動的にリダイレクト(HTTP)またはプロキシ(SSH)できるためです。
これらの手順ではAWS Route53を使用していますが、Cloudflareなどの他のサービスも同様に使用できます。
前提要件
この例では、以下がすでに設定されていることを前提としています:
primary.example.comがGeoのプライマリサイトとして設定されている。secondary.example.comがGeoのセカンダリサイトとして設定されている。
git.example.comサブドメインを作成し、リクエストを自動的に転送します:
- ヨーロッパからのリクエストはセカンダリサイトに転送します。
- 他のすべての場所からのリクエストはプライマリサイトに転送します。
いずれの場合も、以下が必要です:
- 独自のアドレスでアクセス可能な、動作中のGitLab プライマリサイト。
- 動作中のGitLab セカンダリサイト。
- ドメインを管理するRoute53ホストゾーン。
Geoとセカンダリサイトをまだ設定していない場合は、Geo設定手順を参照してください。
トラフィックポリシーの作成
Route53ホストゾーンでは、トラフィックポリシーを使用して、さまざまなルーティング設定を設定できます。
Route53ダッシュボードに移動し、Traffic policies(トラフィックポリシー)を選択します。
Create traffic policy(トラフィックポリシーを作成)を選択します。
Policy Name(ポリシー名)フィールドに
Single Git Hostを入力し、次へを選択します。DNS type(DNS種類)を
A: IP Address in IPv4 formatのままにします。Connect to(接続先)を選択し、Geolocation rule(地理ロケーションルール)を選択します。
最初のロケーションでは、
Defaultのままにします。Connect to(接続先)を選択し、New endpoint(新しいエンドポイント)を選択します。
種類
valueを選択し、<your **primary** IP address>を入力します。2番目のロケーションで、
Europeを選択します。Connect to(接続先)を選択し、New endpoint(新しいエンドポイント)を選択します。
種類
valueを選択し、<your **secondary** IP address>を入力します。Create traffic policy(トラフィックポリシーを作成)を選択します。
Policy record DNS name(ポリシーレコードDNS名)に
gitを入力します。Create policy records(ポリシーレコードを作成)を選択します。
たとえば、git.example.comなどのシングルホストを正常に設定しました。これは、地理ロケーションに基づいてGeoサイトにトラフィックを分配します。
特別なGit URLを使用するようにGitクローンURLを設定する
ユーザーが初めてリポジトリをクローンするとき、通常、プロジェクトページからGitリモートURLをコピーします。デフォルトでは、これらのSSHおよびHTTP URLは、現在のホストの外部URLに基づいています。例:
git@secondary.example.com:group1/project1.githttps://secondary.example.com/group1/project1.git
以下をカスタマイズできます:
- ロケーション対応の
git.example.comを使用するためのSSHリモートURL。これを行うには、Webノードのgitlab.rbでgitlab_rails['gitlab_ssh_host']を設定して、SSHリモートURLホストを変更します。 - HTTP(S)のカスタムGitクローンURLに示すHTTPリモートURL。
Gitリクエスト処理の動作例
以前に文書化された設定手順に従うと、Gitリクエストの処理はロケーション対応になります。リクエストの場合:
- ヨーロッパ以外では、すべてのリクエストはプライマリサイトに転送されます。
- ヨーロッパ内では、以下を経由します:
- HTTP:
git clone http://git.example.com/foo/bar.gitはセカンダリサイトに転送されます。git pushは最初にセカンダリに転送され、自動的にprimary.example.comにリダイレクトされます。
- SSH:
git clone git@git.example.com:foo/bar.gitはセカンダリに転送されます。git pushは最初にセカンダリに転送され、自動的にprimary.example.comにリクエストをプロキシします。
- HTTP:







