AWS Route53을 활용한 위치 기반 Git 원격 URL

Tier: Premium, Ultimate Offering: Self-managed
note
GitLab 14.6부터 GitLab Geo는 웹 UI 및 API 트래픽을 포함한 위치 기반 URL을 지원합니다. 이 구성은 이 문서에서 설명하는 위치 기반 Git 원격 URL보다 권장됩니다.

여러분은 GitLab 사용자에게 가장 가까운 Geo 사이트를 자동으로 사용하는 단일 원격 URL을 제공할 수 있습니다. 이는 사용자가 이동할 때 Git 설정을 업데이트할 필요가 없다는 것을 의미합니다.

이것이 가능한 이유는 Git 푸시 요청이 secondary 사이트에서 primary 사이트로 자동으로 리디렉션(HTTP) 또는 프록시(SSH)될 수 있기 때문입니다.

이 지침에서는 AWS Route53과 같은 다른 서비스인 Cloudflare를 사용할 수도 있습니다.

전제 조건

이 예에서는 이미 다음을 설정했습니다:

  • primary.example.com을 Geo primary 사이트로 설정했습니다.
  • secondary.example.com을 Geo secondary 사이트로 설정했습니다.

우리는 요청을 자동으로 다음과 같이 전달하는 git.example.com 서브도메인을 만듭니다:

  • 유럽에서는 secondary 사이트로부터의 요청.
  • 다른 위치에서는 primary 사이트로부터의 요청.

어느 경우에도 다음이 필요합니다:

  • 자체 주소에서 접근 가능한 작동 중인 GitLab primary 사이트.
  • 작동 중인 GitLab secondary 사이트.
  • 도메인을 관리하는 Route53 호스팅 영역.

아직 Geo primary 사이트 및 secondary 사이트를 설정하지 않은 경우 Geo 설정 지침을 참조하세요.

트래픽 정책 생성

Route53 호스팅 영역에서 트래픽 정책을 사용하여 다양한 라우팅 구성을 설정할 수 있습니다.

  1. Route53 대시보드로 이동하여 트래픽 정책을 선택합니다.

    Traffic policies

  2. 트래픽 정책 생성을 선택합니다.

    Name policy

  3. Policy Name 필드에 Single Git Host를 입력하고 다음을 선택합니다.

    Policy diagram

  4. DNS typeA: IPv4 형식의 IP 주소로 남겨둡니다.
  5. 연결 대상을 선택하고 Geolocation rule을 선택합니다.

    Add geolocation rule

  6. 첫 번째 위치기본(Default)으로 남겨둡니다.
  7. 연결 대상을 선택하고 새 엔드포인트을 선택합니다.
  8. 유형값(value)으로 선택하고 자신의 primary IP 주소를 입력합니다.
  9. 두 번째 위치유럽(Europe)을 선택합니다.
  10. 연결 대상을 선택하고 새 엔드포인트을 선택합니다.
  11. 유형값(value)으로 선택하고 자신의 secondary IP 주소를 입력합니다.

    Add traffic policy endpoints

  12. 트래픽 정책 생성을 선택합니다.

    Create policy records with traffic policy

  13. Policy record DNS namegit을 입력하고 정책 레코드 생성을 선택합니다.

    Created policy record

여러분은 지역에 따라 트래픽을 분산시키는 예를 들어 git.example.com과 같은 단일 호스트를 성공적으로 설정했습니다!

Git 클론 URL을 특수 Git URL 사용하도록 구성

사용자가 처음으로 리포지터리를 복제할 때, 보통 프로젝트 페이지에서 Git 원격 URL을 복사합니다. 기본적으로 이러한 SSH 및 HTTP URL은 현재 호스트의 외부 URL을 기반으로 합니다. 예를 들면:

  • git@secondary.example.com:group1/project1.git
  • https://secondary.example.com/group1/project1.git

Clone panel

여러분은 다음을 사용자 정의할 수 있습니다:

  • SSH 원격 URL을 위치 기반의 git.example.com을 사용하도록 변경합니다. 이를 위해 web 노드gitlab.rb에서 gitlab_rails['gitlab_ssh_host']를 설정하여 SSH 원격 URL 호스트를 변경합니다.
  • HTTP 원격 URL은 HTTP(S)를 위한 사용자 정의 Git 복제 URL에 표시된 대로 수정합니다.

예제 Git 요청 처리 동작

위의 구성 단계를 따른 후, Git 요청 처리는 이제 위치를 고려합니다.

  • 유럽 외부에서는 모든 요청이 primary 사이트로 전달됩니다.
  • 유럽 내에서는:
    • HTTP:
      • git clone http://git.example.com/foo/bar.gitsecondary 사이트로 전달됩니다.
      • git push는 초기에 secondary로 전달되며, 자동으로 primary.example.com로 리디렉션됩니다.
    • SSH:
      • git clone git@git.example.com:foo/bar.gitsecondary로 전달됩니다.
      • git push는 초기에 secondary로 전달되며, 요청이 자동으로 primary.example.com로 프록시됩니다.