Microsoft Azure에서 GitLab 설치

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

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

Prerequisite

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 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를 통해 연결하는 데 사용됩니다. 기본적으로 사용자는 root 액세스 권한을 갖습니다.
  9. 직접 SSH 키를 제공하거나 Azure가 대신 키를 생성하도록 할지 여부를 결정합니다. SSH 공개 키 설정에 대한 자세한 내용은 SSH를 참조하세요.

입력한 설정을 검토하고, 디스크 탭으로 이동합니다.

디스크 탭 구성

디스크에 대해서는 다음을 수행합니다:

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

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

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

네트워킹 탭 구성

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

Azure는 기본적으로 보안 그룹을 만들고 VM에 할당합니다. 마켓플레이스의 GitLab 이미지는 기본적으로 다음과 같은 포트를 열어 둡니다:

포트 설명
80 HTTP 요청에 응답하여 공개 액세스를 허용합니다.
443 HTTPS 요청에 응답하여 공개 액세스를 허용합니다.
22 SSH 연결 요청에 응답하여(public access) 원격 터미널 세션을 위해 공개 액세스를 허용합니다.

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

관리 탭 구성

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

고급 탭 구성

이 탭을 사용하여 가상 머신 확장이나 클라우드 인잇을 통해 추가 구성, 에이전트, 스크립트 또는 애플리케이션을 추가할 수 있습니다. 기본 설정을 변경할 필요는 없습니다.

태그 탭 구성

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

VM 검토 및 생성

최종 탭에서는 선택한 옵션을 통합하여 이전 단계에서 선택한 옵션을 검토하고 수정할 수 있는 창이 제공됩니다. Azure는 백그라운드에서 유효성 검사를 실행하고 필요한 설정을 모두 제공한 경우 VM을 생성할 수 있습니다.

만들기를 선택한 후, Azure가 대신 SSH 키 쌍을 만들도록 선택했다면, 비공개 SSH 키를 다운로드하라는 프롬프트가 표시됩니다. SSH 키는 VM에 SSH를 사용하기 위해 필요합니다.

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

배포 완료

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

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

도메인 이름 설정

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

  1. VM 대시보드에서 DNS 이름 아래의 구성을 선택합니다.
  2. DNS 이름 레이블 필드에 VM 인스턴스에 대한 설명적인 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 대시보드의 설정 > 연결로 이동하여 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를 사용하면 자동으로 Let’s Encrypt를 활성화하고 기본적으로 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을 다시 구성합니다. 변경을 할 때마다 다음 명령을 실행하여 GitLab 구성을 다시 적용합니다.

    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은 보안 수정을 위한 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 인스턴스를 새로 고치고 관리 영역으로 이동하면 이제 최신 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을 업데이트할 수 있습니다. 더 많은 정보는 패키지 서명을 읽어보세요.