Microsoft Azure에 GitLab 설치하기

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

Microsoft Azure 비즈니스 클라우드 사용자들을 위해, GitLab은
Azure Marketplace에 사전 구성된 제공이 있습니다.
이 튜토리얼에서는 단일 가상 머신(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을 만들도록 하겠습니다, 그래서
생성을 선택합니다.

note
VM이 활성 상태(할당된 상태)일 때 Azure는 컴퓨팅 요금이 부과됩니다.
무료 체험 크레딧을 사용하더라도 해당 요금이 발생합니다.
비용을 절감하기 위해 Azure VM을 올바르게 종료하는 방법을 참조하세요.
얼마나 많은 리소스 비용이 들지 알아보려면 Azure 가격 계산기를 확인하세요.

가상 머신을 생성한 후는 다음 섹션의 정보를 사용하여 구성하세요.

기본 탭 구성하기

먼저 구성해야 할 항목은 기본 가상 머신 설정입니다:

  1. 구독 모델과 리소스 그룹을 선택하세요(없으면 새로 생성).
  2. VM 이름을 입력하세요, 예를 들어 GitLab.
  3. 지역을 선택하세요.
  4. 가용성 옵션에서 가용성 존을 선택하고 1로 설정합니다.
    가용성 존에 대해 자세히 읽기.
  5. 선택한 이미지가 GitLab - Gen1으로 설정되어 있는지 확인하세요.
  6. 하드웨어 요구 사항에 따라 VM 크기를 선택하세요.
    500명까지 사용 가능한 GitLab 환경을 운영하기 위한 최소 시스템 요구 사항은
    D4s_v3 크기에 해당하므로 해당 옵션을 선택합니다.
  7. 인증 유형을 SSH 공개 키로 설정합니다.
  8. 사용자 이름을 입력하거나 자동 생성된 사용자 이름을 그대로 두세요.
    이 사용자 이름은 Azure가 SSH를 통해 VM에 연결하는 데 사용됩니다.
    기본적으로 사용자는 루트 접근 권한이 있습니다.
  9. 자체 SSH 키를 제공할지 또는 Azure가 키를 생성하도록 할지를 결정하세요.
    SSH 공개 키 설정에 대한 자세한 내용은 SSH를 참조하세요.

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

디스크 탭 구성

디스크에 대한 설정입니다:

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

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

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

네트워킹 탭 구성

이 탭을 사용하여 가상 머신의 네트워크 연결을 정의합니다.

네트워크 인터페이스 카드(NIC) 설정을 구성합니다.

기본 설정을 그대로 두어도 됩니다.

Azure는 기본적으로 보안 그룹을 생성하며 VM은 이에 할당됩니다.

마켓플레이스의 GitLab 이미지는 기본적으로 다음 포트를 개방합니다:

포트 설명
80 VM이 HTTP 요청에 응답할 수 있도록 하여 공용 액세스를 허용합니다.
443 VM이 HTTPS 요청에 응답할 수 있도록 하여 공용 액세스를 허용합니다.
22 VM이 SSH 연결 요청에 응답할 수 있도록 하여 공용 액세스(인증 포함)가 원격 터미널 세션에 가능하게 합니다.

포트를 변경하거나 규칙을 추가하고 싶다면,

VM이 생성된 후 VM 대시보드의 왼쪽 사이드바에서 네트워킹 설정을 선택하여 변경할 수 있습니다.

관리 탭 구성

이 탭을 사용하여 VM의 모니터링 및 관리 옵션을 구성합니다.

기본 설정을 변경할 필요는 없습니다.

고급 탭 구성

이 탭을 사용하여 추가 구성을 추가하고, 에이전트, 스크립트 또는 가상 머신 확장을 통해 애플리케이션을 추가합니다.

기본 설정을 변경할 필요는 없습니다.

태그 탭 구성

이 탭을 사용하여 리소스를 분류할 수 있는 이름/값 쌍을 추가합니다.

기본 설정을 변경할 필요는 없습니다.

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 레코드를 도메인 등록기관에 추가해야 합니다.

Azuress DNS를 사용하거나

다른 등록기관 을 사용할 수 있습니다.

GitLab 외부 URL 변경

GitLab은 구성 파일에서 external_url을 사용하여 도메인 이름을 설정합니다.

이 설정을 하지 않으면, Azure 친숙한 이름을 방문할 때 브라우저가

공개 IP로 리디렉션됩니다.

GitLab 외부 URL을 설정하려면:

  1. VM 대시보드에서 Settings > Connect로 이동하여 SSH를 통해 GitLab에 연결한 다음 지침을 따릅니다.

    VM을 생성할 때 지정한 사용자 이름과 SSH 키로 로그인하는 것을 잊지 마세요.

    Azure VM 도메인 이름은 이전에 설정한 이름입니다.

    VM에 대한 도메인 이름을 설정하지 않았다면 IP 주소를 대신 사용할 수 있습니다.

    예제의 경우:

    ssh -i <private key path> 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은 기본적으로 관리자 사용자를 생성합니다.

자격 증명은 다음과 같습니다:

로그인 후 즉시 비밀번호를 변경하는 것을 잊지 마세요.

GitLab 인스턴스 유지 관리

GitLab 환경을 최신 상태로 유지하는 것이 중요합니다. GitLab 팀은 지속적으로 개선을 진행하고 있으며, 보안상의 이유로 업데이트가 필요할 수 있습니다. GitLab을 업데이트할 필요가 있을 때, 이 섹션의 정보를 사용하세요.

현재 버전 확인

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

  1. 왼쪽 사이드바에서 하단의 Admin을 선택합니다.

  2. 개요 > 대시보드를 선택합니다.

  3. 구성 요소 테이블에서 버전을 찾습니다.

보안 수정 사항이 포함된 더 최신 버전의 GitLab이 있는 경우, GitLab은 업데이트를 권장하는 Update asap 알림 메시지를 표시합니다.

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. 업데이트 프로세스가 완료되면, 다음과 같은 메시지가 나타납니다:

    Upgrade complete! If your GitLab server is misbehaving try running
    
       sudo gitlab-ctl restart
    
    before anything else.
    

브라우저에서 GitLab 인스턴스를 새로 고치고 Admin 영역으로 이동하십시오. 이제 최신 상태의 GitLab 인스턴스가 있어야 합니다.

다음 단계 및 추가 구성

기능적인 GitLab 인스턴스가 준비되었으므로, 다음 단계를 따라 새로운 설치로 할 수 있는 추가 작업을 알아보세요.

문제 해결

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

GitLab 저장소에 대한 GPG 키 업데이트

주요 사항: 이는 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을 업데이트할 수 있습니다. 더 많은 정보는 패키지 서명에 대해 읽어보세요.