Microsoft Azure에 GitLab 설치하기

Tier: Free, Premium, Ultimate Offering: Self-Managed

Microsoft Azure 비즈니스 클라우드 사용자를 위해 GitLab은 Azure 마켓플레이스에 사전 구성된 오퍼링을 제공합니다. 이 튜토리얼은 단일 가상 머신(VM)에 GitLab Enterprise Edition을 설치하는 방법에 대해 설명합니다.

전제 조건

Azure에 계정이 필요합니다. 다음 방법 중 하나를 사용하여 계정을 획득합니다:

  • 이미 구독이있는 경우 해당 계정을 사용합니다. 그렇지 않은 경우, 무료로 Azure 계정을 여는 다양한 방법을 사용할 수 있습니다. Azure의 무료 평가판은 30일 동안 Azure를 탐색할 수있는 $200 크레딧을 제공합니다. Azure의 포괄적인 FAQ에서 자세히 알아보세요.
  • MSDN 구독이 있는 경우 Azure 구독자 혜택을 활성화할 수 있습니다. MSDN 구독에는 매월 되풀이되는 Azure 크레딧이 제공되므로 사용할 수 있습니다. 이 크레딧으로 GitLab을 사용해 볼 수 있습니다.

GitLab 배포 및 구성

GitLab이 이미 사전 구성된 이미지에 설치되어 있기 때문에 새 VM을 만들기만 하면 됩니다:

  1. 마켓플레이스에서 GitLab 오퍼링 방문
  2. 즉시 가져오기를 선택하면 Azure에서 이 앱 만들기 창이 열립니다. 계속을 선택합니다.
  3. Azure 포털에서 다음 옵션 중 하나를 선택합니다:
    • 만들기를 선택하여 처음부터 VM을 만듭니다.
    • 프리셋 구성으로 시작을 선택하여 미리 구성된 옵션으로 시작합니다. 이러한 구성은 필요한 시기에 언제든지 수정할 수 있습니다.

본 가이드를 위해 VM을 처음부터 만들도록하겠습니다. 따라서 만들기를 선택합니다.

NOTICE: Azure VM이 활성 상태 일 때(즉, “할당 됨”으로 알려짐) Azure는 컴퓨팅 요금이 발생합니다. 이것을 사용하고있는 무료 평가판 크레딧이 있더라도 돈을 절약하기 위하여 올바르게 Azure VM을 종료하는 방법을 참조하세요. 리소스 비용을 알아보려면 Azure 가격 계산기를 확인하세요.

가상 머신을 만든 후, 아래 정보를 사용하여 구성합니다.

기본 탭 구성

기본 가상 머신 설정을 구성해야 하는 첫 번째 항목들은 다음과 같습니다:

  1. 구독 모델 및 리소스 그룹(없으면 새로 만듦)을 선택합니다.
  2. 예를 들어 GitLab과 같이 VM에 대한 이름을 입력합니다.
  3. 지역을 선택합니다.
  4. 가용성 옵션에서 가용성 영역을 선택하고 1로 설정합니다. 가용성 영역에 대해 더 자세히 알아보세요.
  5. 선택된 이미지를 GitLab - Gen1로 설정합니다.
  6. 하드웨어 요구 사항에 따라 VM 크기를 선택합니다. 최소 시스템 요구 사항을 충족하면 최대 500명의 사용자를 위한 GitLab 환경을 실행할 수 있는 D4s_v3 크기를 선택합니다.
  7. 인증 유형을 SSH 공개 키로 설정합니다.
  8. 사용자 이름을 입력하거나 자동으로 생성 된 것을 그대로 둡니다. 이것은 Azure가 VM에 SSH를 통해 연결하는 데 사용하는 사용자입니다. 기본적으로 사용자 루트 액세스 권한을 가지고 있습니다.
  9. 자체 SSH 키를 제공하거나 Azure가 대신 생성하도록할지 결정합니다. SSH 공개 키 설정에 대한 자세한 정보는 SSH를 참조하십시오.

입력 한 설정을 검토 한 후 디스크 탭으로 이동하세요.

디스크 탭 구성

디스크에 대해:

  1. OS 디스크 유형으로 프리미엄 SSD를 선택합니다.
  2. 기본 암호화를 선택합니다.

Azure가 제공하는 디스크 유형에 대해 자세히 알아보세요.

설정을 검토 한 후 네트워킹 탭으로 이동합니다.

네트워킹 탭 구성

이 탭을 사용하여 가상 머신의 네트워크 연결을 정의하고 네트워크 인터페이스 카드 (NIC) 설정을 구성합니다. 기본 설정 그대로 둘 수 있습니다.

Azure는 기본적으로 보안 그룹을 생성하고 VM이 할당됩니다. 마켓플레이스의 GitLab 이미지는 기본값으로 다음 포트가 열려 있습니다:

포트 설명
80 HTTP 요청에 응답하여 공개적 접근을 허용합니다.
443 HTTPS 요청에 응답하여 공개적 접근을 허용합니다.
22 SSH 연결 요청에 응답하여 원격 터미널 세션에 공개적 접근을 허용합니다(인증이 필요함).

포트를 변경하거나 규칙을 추가하려면 VM을 만든 후에 왼쪽 사이드바의 네트워킹 설정을 선택하여 VM 대시보드에서 이 작업을 수행할 수 있습니다.

관리 탭 구성

이 탭을 사용하여 VM의 모니터링 및 관리 옵션을 구성합니다. 기본 설정을 변경할 필요는 없습니다.

고급 탭 구성

이 탭을 사용하여 가상머신 확장이나 cloud-init을 통해 추가 구성, 에이전트, 스크립트 또는 애플리케이션을 추가합니다. 기본 설정을 변경할 필요는 없습니다.

태그 탭 구성

이 탭을 사용하여 리소스를 분류할 수 있는 이름/값 쌍을 추가합니다. 기본 설정을 변경할 필요는 없습니다.

VM 검토 및 생성

최종 탭에서 이전 단계에서 선택한 옵션을 모두 확인하고 수정할 수 있습니다. Azure는 백그라운드에서 유효성 검사를 수행하며 필요한 설정을 모두 제공했다면 VM을 생성할 수 있습니다.

생성을 선택한 후에 Azure가 SSH 키 쌍을 생성하도록 선택한 경우, 개인 SSH 키를 다운로드하는 프롬프트가 표시됩니다. 해당 키를 다운로드하여 VM에 SSH하기 위해 필요합니다.

키를 다운로드한 후에 배포가 시작됩니다.

배포 완료

이 시점에서 Azure는 새 VM을 배포하기 시작합니다. 배포 과정은 완료까지 몇 분이 걸립니다. 완료되면 새 VM과 해당 리소스가 Azure 대시보드에 표시됩니다. VM 대시보드를 방문하려면 리소스로 이동을 선택하세요.

GitLab이 이제 배포되어 사용할 준비가 되었습니다. 그러나 사용하기 전에 도메인 이름을 설정하고 GitLab을 구성해야 합니다.

도메인 이름 설정

VM에는 공용 IP 주소(기본적으로 정적)가 있지만 Azure를 통해 VM에 설명적인 DNS 이름을 할당할 수 있습니다.

  1. VM 대시보드에서 DNS 이름 아래의 구성을 선택합니다.
  2. DNS 이름 레이블 필드에 인스턴스에 대한 설명적인 DNS 이름을 입력합니다. 예를 들어 gitlab-prod. 이렇게 하면 VM에 gitlab-prod.eastus.cloudapp.azure.com으로 액세스할 수 있습니다.
  3. 저장을 선택합니다.

대부분의 사용자는 나중에 자체 도메인 이름을 사용하려고 합니다. 이를 위해 Azure VM의 공용 IP 주소를 가리키는 DNS A 레코드를 도메인 등록기에 추가해야 합니다. Azure DNS 또는 기타 등록기를 사용할 수 있습니다.

GitLab 외부 URL 변경

GitLab은 설정 파일의 external_url을 사용하여 도메인 이름을 설정합니다. 이를 설정하지 않으면 Azure 친화적인 이름을 방문할 때 브라우저가 공용 IP로 리디렉션됩니다.

GitLab 외부 URL 설정하기:

  1. VM 대시보드에서 Settings > Connect로 이동하여 SSH를 통해 GitLab에 연결하고 지침에 따릅니다. VM 생성 시 지정한 사용자 이름과 SSH 키로 로그인하는 것을 기억하세요. 이 Azure VM 도메인 이름은 이전에 설정한 것입니다. VM에 도메인 이름을 설정하지 않은 경우 IP 주소를 대신 사용할 수 있습니다.

    예를 들어:

    ssh -i <개인 키 경로> gitlab-azure@gitlab-prod.eastus.cloudapp.azure.com
    

    참고: 자격 증명을 재설정해야 하는 경우 Azure VM의 사용자에 대한 SSH 자격 증명을 재설정하는 방법을 참조하세요.

  2. 에디터로 /etc/gitlab/gitlab.rb를 엽니다.
  3. external_url을 찾아 자체 도메인 이름으로 교체합니다. 이 예시를 위해 Azure가 설정한 기본 도메인 이름을 사용하세요. URL에 https를 사용하면 자동으로 활성화되며 기본적으로 HTTPS로 설정됩니다:

    external_url 'https://gitlab-prod.eastus.cloudapp.azure.com'
    
  4. 다음 설정을 찾아 주석 처리하여 GitLab이 잘못된 인증서를 사용하지 않도록합니다.

    # nginx['redirect_http_to_https'] = true
    # nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
    # nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"
    
  5. 변경 사항이 적용되도록 GitLab을 다시 구성합니다. /etc/gitlab/gitlab.rb를 변경할 때마다 다음 명령을 실행하세요:

    sudo gitlab-ctl reconfigure
    
  6. 재부팅 후 도메인 이름이 초기화되는 것을 방지하려면 Bitnami가 사용하는 유틸리티의 이름을 변경하세요.

    sudo mv /opt/bitnami/apps/gitlab/bnconfig /opt/bitnami/apps/gitlab/bnconfig.bak
    

이제 새 외부 URL에서 브라우저로 GitLab을 방문할 수 있습니다.

GitLab을 처음 방문하십시오

이전에 설정한 도메인 이름을 사용하여 새로운 GitLab 인스턴스를 브라우저에서 방문하세요. 이 예에서는 https://gitlab-prod.eastus.cloudapp.azure.com입니다.

가장 먼저 나타나는 것은 로그인 페이지입니다. GitLab은 기본적으로 관리자 사용자를 만듭니다. 자격 증명은 다음과 같습니다:

  • 사용자 이름: root
  • 비밀번호: 비밀번호는 자동으로 생성되며 찾는 두 가지 방법이 있습니다. (찾는 방법)

로그인 한 후에는 반드시 즉시 비밀번호를 변경하십시오.

GitLab 인스턴스 유지 관리

GitLab 환경을 최신 상태로 유지하는 것이 중요합니다. GitLab 팀은 지속적으로 향상을 이루고 있으며 때로는 보안상의 이유로 업데이트해야 할 수도 있습니다. GitLab을 업데이트해야 하는 경우에는 이 섹션의 정보를 사용하십시오.

현재 버전 확인

현재 실행 중인 GitLab의 버전을 확인하려면:

  1. 왼쪽 사이드바에서 가장 아래 관리 영역을 선택합니다.
  2. 개요 > 대시보드를 선택합니다.
  3. 구성 요소 테이블에서 버전을 찾습니다.

GitLab에서 하나 이상의 보안 수정이 포함된 더 최신 버전이 있는 경우, 지금 업데이트하세요 알림 메시지를 표시합니다. 이 메시지에서 업데이트를 권장합니다.

GitLab 업데이트

GitLab을 최신 버전으로 업데이트하려면:

  1. SSH를 통해 VM에 연결합니다.
  2. GitLab을 업데이트합니다:

    sudo apt update
    sudo apt install gitlab-ee
    

    이 명령은 GitLab과 관련된 구성 요소를 최신 버전으로 업데이트하며 완료하는 데 시간이 걸릴 수 있습니다. 이 기간 동안 터미널에는 터미널에 수행되는 다양한 업데이트 작업이 표시됩니다.

    참고: E: The repository 'https://packages.gitlab.com/gitlab/gitlab-ee/debian buster InRelease' is not signed.과 같은 오류가 발생하는 경우, 문제 해결 섹션을 참조하십시오.

  3. 업데이트 프로세스가 완료되면 다음과 같은 메시지가 표시됩니다:

    업그레이드가 완료되었습니다! GitLab 서버에 문제가 있으면 다음 명령을 실행해 보십시오.
    
       sudo gitlab-ctl restart
    
    그 이후에 아무 것도 하기 전에.
    

브라우저에서 GitLab 인스턴스를 새로 곰방하고 관리 영역으로 이동하면 이제 최신 상태의 GitLab 인스턴스를 사용할 수 있어야 합니다.

다음 단계 및 추가 구성

이제 기능적인 GitLab 인스턴스가 있으므로 새로운 설치로 할 수 있는 것을 알아보기 위해 다음 단계를 따르십시오.

문제 해결

본 섹션에서는 만날 수 있는 일반적인 오류에 대해 설명합니다.

GitLab 리포지토리의 GPG 키 업데이트

참고: 이것은 새로운 GPG 키로 GitLab 이미지가 업데이트될 때까지의 일시적인 해결책입니다.

Azure에서 제공하는 Bitnami의 사전 구성된 GitLab 이미지는 2020년 4월에 폐기된 GPG 키를 사용합니다.

리포지토리를 업데이트하려고 하면 시스템이 다음과 같은 오류를 반환합니다:

[   21.023494] apt-setup[1198]: W: GPG error: https://packages.gitlab.com/gitlab/gitlab-ee/debian buster InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 3F01618A51312F3F
[   21.024033] apt-setup[1198]: E: The repository 'https://packages.gitlab.com/gitlab/gitlab-ee/debian buster InRelease' is not signed.

이 문제를 해결하려면 새로운 GPG 키를 가져옵니다:

sudo apt install gpg-agent
curl "https://gitlab-org.gitlab.io/omnibus-gitlab/gitlab_new_gpg.key" \
     --output /tmp/omnibus_gitlab_gpg.key
sudo apt-key add /tmp/omnibus_gitlab_gpg.key

이제 GitLab을 업데이트할 수 있습니다. 자세한 내용은 패키지 서명을 읽어보십시오.