Microsoft Azure에 GitLab 설치하기
마이크로소프트 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을 생성하기만 하면 됩니다.
- 마켓플레이스의 GitLab 오퍼링을 방문하십시오.
- 지금 가져오기를 선택하면 Azure에서 이 앱 만들기 창이 열립니다. 계속을 선택하십시오.
- Azure 포털에서 다음 중 하나를 선택하십시오:
- 빈페이지에서 시작을 선택하여 VM을 처음부터 생성합니다.
- 사전 설정된 구성으로 시작을 선택하여 사전 구성된 옵션을 사용하여 시작합니다. 이러한 구성은 언제든지 수정할 수 있습니다.
본 설명서를 위해 VM을 처음부터 생성해 보겠습니다. 따라서 생성을 선택하십시오.
가상 머신을 생성한 후 다음 섹션의 정보를 사용하여 구성하십시오.
기본 탭 구성
가상 머신의 기본 설정을 구성해야 합니다:
- 구독 모델과 리소스 그룹(없는 경우 새로 생성)을 선택하십시오.
- 예를 들어
GitLab
과 같은 VM 이름을 입력하십시오. - 지역을 선택하십시오.
-
가용성 옵션에서 가용성 영역을 선택하고
1
로 설정하십시오. 가용성 영역에 대해 자세히 알아보기를 참조하십시오. - 선택한 이미지가 GitLab - Gen1로 설정되어 있는지 확인하십시오.
-
하드웨어 요구 사항에 따라 VM 크기를 선택하십시오.
500명의 사용자까지의 GitLab 환경을 실행하는 데 필요한 최소 시스템 요구 사항은
D4s_v3
크기로 충족되므로 해당 옵션을 선택하십시오. - 인증 유형을 SSH 공개 키로 설정하십시오.
- 사용자 이름을 입력하거나 자동으로 생성된 사용자 이름을 사용하십시오. 이 사용자는 Azure가 VM에 SSH를 통해 연결하는 데 사용하는 사용자입니다. 기본적으로 사용자에게는 루트 액세스 권한이 있습니다.
- SSH 키를 직접 제공할 것인지 아니면 Azure가 대신 생성하도록 할 것인지 결정하십시오. SSH 공개 키 설정에 대한 자세한 내용은 SSH를 참조하십시오.
입력한 설정을 검토한 후 디스크 탭으로 이동하십시오.
디스크 탭 구성
디스크에 대해 다음을 수행하십시오:
- OS 디스크 유형으로 Premium SSD를 선택하십시오.
- 기본 암호화를 선택하십시오.
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 이름을 할당할 수 있습니다.
- VM 대시보드에서 DNS name 아래의 Configure를 선택합니다.
-
DNS name label 필드에 인스턴스에 대한 서술적인 DNS 이름을 입력하세요. 예를 들어
gitlab-prod
입니다. 이로써 VM은gitlab-prod.eastus.cloudapp.azure.com
에서 접근할 수 있습니다. - 저장을 선택합니다.
대부분의 사용자는 결국 자체 도메인 이름을 사용하길 원합니다. 이를 위해 Azure VM의 공용 IP 주소를 가리키는 DNS A
레코드를 도메인 등록기에 추가해야 합니다. Azure의 DNS이나 다른 등록기를 사용할 수 있습니다.
GitLab 외부 URL 변경
GitLab은 구성 파일에서 external_url
을 사용하여 도메인 이름을 설정합니다. 이것을 설정하지 않으면 Azure 우호적인 이름을 방문할 때 브라우저가 공용 IP로 리디렉션됩니다.
GitLab 외부 URL을 설정하려면:
-
VM 대시보드에서 Settings > Connect로 이동하여 SSH를 통해 GitLab에 연결하고 안내에 따릅니다. VM을 생성할 때 지정한 사용자 이름과 SSH 키로 로그인하세요. Azure VM 도메인 이름은 이전에 설정한 것을 사용하십시오. VM에 도메인 이름을 설정하지 않았다면 IP 주소를 대신 사용할 수 있습니다.
예시의 경우:
ssh -i <개인 키 경로> gitlab-azure@gitlab-prod.eastus.cloudapp.azure.com
자격 증명을 재설정해야 하는 경우 Azure VM의 사용자에 대한 SSH 자격 증명 재설정 방법을 읽어보세요. - 편집기로
/etc/gitlab/gitlab.rb
을 엽니다. -
external_url
을 찾아 자체 도메인 이름으로 대체합니다. 이 예시를 위해 Azure가 설정한 기본 도메인 이름을 사용하세요. URL에https
를 사용하면 자동으로 활성화되며 기본적으로 HTTPS로 설정됩니다.external_url 'https://gitlab-prod.eastus.cloudapp.azure.com'
-
다음 설정을 찾아 주석 처리하여 GitLab이 잘못된 인증서를 선택하지 않도록합니다.
# nginx['redirect_http_to_https'] = true # nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt" # nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"
-
변경 사항이 적용되도록 GitLab을 다시 구성합니다.
/etc/gitlab/gitlab.rb
을 변경할 때마다 다음 명령을 실행합니다.sudo gitlab-ctl reconfigure
-
재부팅 후 도메인 이름이 초기화되지 않도록 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 버전을 확인하려면:
- 왼쪽 사이드바에서 Admin Area를 가장 아래에서 선택합니다.
- Overview > Dashboard를 선택합니다.
- Components 테이블에서 버전을 찾습니다.
하나 이상의 보안 수정이 포함된 더 최신 사용 가능한 GitLab 버전이 있다면, Update asap 알림 메시지가 표시되며 업데이트를 권장합니다.
GitLab 업데이트
GitLab을 최신 버전으로 업데이트하려면:
- SSH를 통해 VM에 연결합니다.
-
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.
와 같은 오류가 발생하면 문제 해결 섹션을 참조하세요. -
업데이트 프로세스가 완료되면 다음과 유사한 메시지가 표시됩니다:
업그레이드가 완료되었습니다! GitLab 서버에 문제가 발생하면 sudo gitlab-ctl restart 를 먼저 실행해 보세요.
브라우저에서 GitLab 인스턴스를 새로 고치고 Admin Area로 이동하세요. 이제 최신 상태의 GitLab 인스턴스가 되어야 합니다.
다음 단계 및 추가 구성
지금까지 기능적인 GitLab 인스턴스를 갖게 되었으니, 새로 설치한 시스템으로 어떤 작업을 더 수행할 수 있는지 알아보기 위해 다음 단계를 따르세요.
문제 해결
이 섹션에서는 일반적으로 발생할 수 있는 오류를 설명합니다.
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을 업데이트할 수 있습니다. 더 많은 정보를 보려면 패키지 서명을 확인하세요.