Microsoft Azure에 GitLab 설치하기

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

마이크로소프트 Azure 비즈니스 클라우드 사용자를 위해, GitLab은 Azure Marketplace에서 사전 구성된 오퍼링을 제공합니다. 이 튜토리얼에서는 Enterprise Edition의 GitLab을 단일 가상 머신(VM)에 설치하는 방법을 설명합니다.

사전 준비 작업

Azure 계정이 필요합니다. 다음 방법 중 하나를 사용하여 계정을 얻을 수 있습니다:

  • 이미 구독이 있는 경우 해당 계정을 사용하십시오. 그렇지 않은 경우 무료로 자체 Azure 계정을 열 수 있습니다. Azure의 무료 평가판은 30일 동안 Azure 탐색을 위해 $200 크레딧을 제공합니다. Azure의 전체 FAQ에서 자세한 내용을 확인하십시오 (https://azure.microsoft.com/en-us/free/free-account-faq/).
  • MSDN 구독이 있는 경우 Azure 구독 혜택을 활성화할 수 있습니다. MSDN 구독은 매월 반복되는 Azure 크레딧을 제공하여 해당 크레딧을 사용하여 GitLab을 사용해 볼 수 있습니다.

GitLab 배포 및 구성

GitLab은 이미 사전 구성된 이미지에 설치되어 있으므로 새 VM을 생성하기만 하면 됩니다.

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

본 설명서를 위해 VM을 처음부터 생성해 보겠습니다. 따라서 생성을 선택하십시오.

note
Azure VM이 활성 상태일 때(“할당된”이라고 함) 계산 요금이 발생하므로 무료 평가판 크레딧을 사용 중이더라도 유의하십시오. 돈을 절약하려면 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 디스크 유형으로 Premium SSD를 선택하십시오.
  2. 기본 암호화를 선택하십시오.

Azure에서 제공하는 디스크 유형에 대해 자세히 알아보십시오 (https://learn.microsoft.com/en-us/azure/virtual-machines/managed-disks-overview).

설정을 검토한 후 네트워킹 탭으로 이동하십시오.

네트워킹 탭 구성

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

Azure는 기본적으로 보안 그룹을 생성하고 VM에 할당합니다. 마켓플레이스의 GitLab 이미지는 기본적으로 다음 포트를 엽니다:

포트 설명
80 HTTP 요청에 대한 VM 응답을 활성화하여 공개 액세스를 허용합니다.
443 HTTPS 요청에 대한 VM 응답을 활성화하여 공개 액세스를 허용합니다.
22 SSH 연결 요청에 대한 VM 응답을 활성화하여 원격 터미널 세션에 공개적으로 액세스를 허용합니다(인증 필요).

포트를 변경하거나 규칙을 추가하려면 VM 생성 후 왼쪽 사이드바의 네트워킹 설정을 선택하여 변경할 수 있습니다. ### 관리 탭 구성

이 탭을 사용하여 VM의 모니터링 및 관리 옵션을 구성하십시오. 기본 설정을 변경할 필요가 없습니다. ### 고급 탭 구성

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

자원을 분류할 수 있게 해주는 이름/값 쌍을 추가할 수 있습니다. 기본 설정을 변경할 필요가 없습니다. ### VM 검토 및 생성

최종 탭에서는 모든 선택 옵션이 표시되며, 이전 단계에서 선택한 옵션을 검토하고 수정할 수 있습니다. Azure는 백그라운드에서 검증 테스트를 실행하고 필요한 설정을 모두 제공한 경우 VM을 생성할 수 있습니다.

생성을 선택한 후, Azure가 SSH 키 쌍을 생성하도록 선택했다면 다운로드할 프롬프트가 나타납니다. SSH 키를 다운로드하여 VM에 연결하는 데 필요합니다.

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

배포 완료

이 시점에서 Azure는 새 VM을 배포하기 시작합니다. 배포 과정은 몇 분 정도 소요됩니다. 완료된 후, 새 VM과 해당 리소스가 Azure 대시보드에 표시됩니다. VM 대시보드에서 리소스로 이동을 선택하여 VM의 대시보드를 방문하십시오.

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

도메인 이름 설정

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

  1. VM 대시보드에서 DNS name 아래의 Configure를 선택합니다.
  2. DNS name label 필드에 인스턴스에 대한 서술적인 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
    
    note
    자격 증명을 재설정해야 하는 경우 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. 왼쪽 사이드바에서 Admin Area를 가장 아래에서 선택합니다.
  2. Overview > Dashboard를 선택합니다.
  3. Components 테이블에서 버전을 찾습니다.

하나 이상의 보안 수정이 포함된 더 최신 사용 가능한 GitLab 버전이 있다면, Update asap 알림 메시지가 표시되며 업데이트를 권장합니다.

GitLab 업데이트

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

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

    sudo apt update
    sudo apt install gitlab-ee
    

    이 명령은 GitLab 및 해당 컴포넌트를 최신 버전으로 업데이트하며 완료에는 시간이 걸릴 수 있습니다. 이 과정 동안 터미널에는 다양한 업데이트 작업이 표시됩니다.

    note
    E: The repository 'https://packages.gitlab.com/gitlab/gitlab-ee/debian buster InRelease' is not signed.와 같은 오류가 발생하면 문제 해결 섹션을 참조하세요.
  3. 업데이트 프로세스가 완료되면 다음과 유사한 메시지가 표시됩니다:

    업그레이드가 완료되었습니다! GitLab 서버에 문제가 발생하면
          
       sudo gitlab-ctl restart
       
    를 먼저 실행해 보세요.
    

브라우저에서 GitLab 인스턴스를 새로 고치고 Admin Area로 이동하세요. 이제 최신 상태의 GitLab 인스턴스가 되어야 합니다.

다음 단계 및 추가 구성

지금까지 기능적인 GitLab 인스턴스를 갖게 되었으니, 새로 설치한 시스템으로 어떤 작업을 더 수행할 수 있는지 알아보기 위해 다음 단계를 따르세요.

문제 해결

이 섹션에서는 일반적으로 발생할 수 있는 오류를 설명합니다.

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

note
GitLab 이미지가 새로운 GPG 키로 업데이트될 때까지의 임시 해결책입니다.

Azure(비트나미 제공)의 사전 구성된 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을 업데이트할 수 있습니다. 더 많은 정보를 보려면 패키지 서명을 확인하세요.