Microsoft Azure에 GitLab 설치하기

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

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

Prerequisite

Azure에 계정이 필요합니다. 계정을 얻는 방법은 다음과 같습니다:

  • 이미 구독이 있는 경우 해당 계정을 사용합니다. 그렇지 않으면 무료로 자체 Azure 계정을 만드세요. Azure의 무료 평가판을 사용하면 30일 동안 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을 만들어 보겠습니다. 따라서 만들기를 선택합니다.

참고: Azure는 VM이 활성 상태인 경우(즉, “할당된” 경우) 언제든지 컴퓨팅 요금이 청구됩니다. 이 때 무료 평가판 크레딧을 사용하더라도 비용이 발생할 수 있습니다. 돈을 절약하기 위해 Azure VM을 올바르게 종료하는 방법을 확인하세요. 리소스 비용이 얼마나 지불되는지 알아보려면 Azure 가격 계산기를 참조하세요.

가상 머신을 만든 후 다음 섹션의 정보를 사용하여 구성합니다.

기본 탭 구성

가상 머신의 기본 설정을 구성해야 합니다.

  1. 구독 모델과 리소스 그룹(없으면 새로 생성)을 선택합니다.
  2. VM에 이름을 입력합니다. 예: GitLab.
  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 연결 요청에 응답하여 공개 액세스를 허용합니다(인증 사용). 원격 터미널 세션에 SSH로 연결할 수 있습니다.

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

관리 탭 구성

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

고급 탭 구성

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

태그 탭 구성

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

VM 검토 및 생성

마지막 탭에서는 이전 단계에서 선택한 모든 옵션이 표시되어 있으며 이를 검토하고 수정할 수 있습니다. Azure는 백그라운드에서 유효성 검사를 수행하며 필요한 모든 설정을 제공한 경우 VM을 만들 수 있습니다.

만들기를 선택한 후 Azure가 대신 SSH 키 쌍을 생성하도록 선택한 경우 개인 SSH 키를 다운로드하라는 프롬프트가 표시됩니다. VM에 SSH로 연결하는 데 필요하므로 키를 다운로드합니다.

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

배포 완료

이 단계에서 Azure는 새 VM을 배포하기 시작합니다. 배포 과정은 몇 분 정도 소요됩니다. 완료되면 Azure 대시보드에 새 VM 및 해당 리소스가 표시됩니다. 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 대시보드에서 설정 > 연결으로 이동하여 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를 사용하면 자동으로 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을 다시 구성해야 합니다. /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은 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. 업데이트 프로세스가 완료되면 다음과 유사한 메시지가 표시됩니다:

    업그레이드가 완료되었습니다! 만약 GitLab 서버에 문제가 있으면
    
       sudo gitlab-ctl restart
    
    를 실행해보세요.
    

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

다음 단계 및 추가 구성

이제 기능적인 GitLab 인스턴스가 있으므로 다음 단계를 따라 새로운 설치로 무엇을 더 할 수 있는지 알아보세요.

문제 해결

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

GitLab 저장소의 GPG 키 업데이트

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

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을 업데이트할 수 있습니다. 자세한 정보는 패키지 서명을 읽어보세요.