DevOps/Git & Git Runner

[GIT] Ubuntu 22.04 - Gitlab-ee 설치 및 셋팅

코드테크 2022. 11. 10. 16:27

Ubuntu 22.04 버전 Gitlab-ee 버전 설치입니다.

기존 Gitlab-ce 만 무료 버전으로 알고 계시는 사람들이 계시던데

ee 버전도 무료로 이용 가능합니다. 평가판 기간이 만료되면 자동으로 무료 기능으로 사용 가능하다는 사실!!

ce 버전은 추후에 유료 버전으로 업그레이드가 필요할 경우 ee버전으로 마이그레이션 후 몇 가지 작업이 필요한데
ee버전으로 설치 시에는 나중에 필요에 따라 유료 버전으로 바꾸고 싶을 때 인스턴스를 새로 구성하지 않고
유료 기능으로 활성화할 수 있다는 장점이 있기에 Gitlab-ee버전으로 설치했습니다.

 

공식 홈페이지에서 설명하는 gitlab 권장사양

CPU : 4 코어 이상 (4 코어 기준 최대 500명 사용자 가능)
Memory : 4GB 이상 (4GB 기준 최대 500명 사용자 가능)
DISK : 2.5GB 이상

Memory가 충분하더라도 최소 2GB 이상의 스왑 메모리를 확보하도록 권장하고 있습니다.

 

** 저는 CPU 2 코어 Memery 4GB 스왑 8GB 인 서버에 설치를 진행하였습니다. **

 

#1. 시스템 패키지 업데이트

sudo apt update

 

#2. 필요 종속성 패키지 설치

sudo apt install tzdata curl ca-certificates openssh-server

 

#3. Gitlab 패키지 저장소 추가

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

 

#4. 설치

sudo apt install gitlab-ee EXTERNAL_URL="https://gitlab.example.com"

EXTERNAL_URL 은 입력하지 않아도 됩니다. 설치 후에 설정 파일에서 변경 가능

 

#5. 설정 파일 재구성

/etc/gitlab/gitlab.rb 파일에 접속할 URL 설정 

## vi /etc/gitlab/gitlab.rb

external_url = "접속할 도메인:포트번호"

 

변경 후에 터미널에서 아래 명령어 실행

gitlab-ctl reconfigure 

GitLab 인스턴스를 관리하는 동안 설정 파일을 바꾸고 입력해야 하는 명령 중 하나는 gitlab-ctl reconfigure.
간단히 말해서 이 명령은 구성 파일을 구문 분석하고 제공된 값으로 재구성을 한다는 명령어이다.

 

 

위에서 입력한 url로 접속 시 기본 패스워드는 

/etc/gitlab/initial_root_password 여기에서 확인 가능하다.

root와 해당 비밀번호 입력 후 접속하여 비밀번호 변경해주면 gitlab Install 은 끝!

 

#6. 제한된 서버에 Gitlab을 설치해야 할 경우

만약 서버 성능이 낮은 곳에 gitlab을 설치해야 할 경우 (메모리 2 GIB)

스왑 메모리 1GB 구성 후 스왑 공간을 사용하는 빈도를 값을 설정해주시면 좋습니다.

# 재부팅 시 초기화
sudo sysctl vm.swappiness=10

# 영구 적용할 시
vi /etc/sysctl.conf
vm.swappiness=10

값이 낮을수록 익명 메모리 페이지를 해제하고 이를 스왑에 쓰는 Linux의 기본 설정이 줄어들지만 파일 지원 페이지에서도 동일한 작업을 수행하려는 기본 설정이 높아집니다.

이후 /etc/gitlab/gitlab.rb 설정 파일 맨 아래에 해당 값 추가

## vi /etc/gitlab/gitlab.rb

## 푸마 클러스터모드 비활성화 단일 프로세서 동작
puma['worker_processes'] = 0

## 백그라운드 처리 데몬 동시성 모드 동작 값
sidekiq['max_concurrency'] = 10

## 모니터링 비활성화
prometheus_monitoring['enable'] = false

## Rails 의 메모리 할당자를 jemalloc으로 구성
gitlab_rails['env'] = {
  'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'
}

gitaly['env'] = {
  'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000',
  'GITALY_COMMAND_SPAWN_MAX_PARALLEL' => '2'
}

## Gitaly에서 시행하는 최대 동시성 및 메모리 제한
gitaly['cgroups_count'] = 2
gitaly['cgroups_mountpoint'] = '/sys/fs/cgroup'
gitaly['cgroups_hierarchy_root'] = 'gitaly'
gitaly['cgroups_memory_enabled'] = true
gitaly['cgroups_memory_bytes'] = 500000
gitaly['cgroups_cpu_enabled'] = true
gitaly['cgroups_cpu_shares'] = 512

gitaly['concurrency'] = [
  {
    'rpc' => "/gitaly.SmartHTTPService/PostReceivePack",
    'max_per_repo' => 3
  }, {
    'rpc' => "/gitaly.SSHService/SSHUploadPack",
    'max_per_repo' => 3
  }
]

 

 

TIP) 알아두면 좋은 명령어 

sudo gitlab-ctl start - 서버 시작

sudo gitlab-ctl stop - 서버 중지

sudo gitlab-ctl restart - 서버 재시작

sudo gitlab-ctl status - 서버 상태 확인

 

sudo gitlab-ctl deploy-page up - gitlab block

sudo gitlab-ctl deploy-page down - gitlab block 해제

sudo gitlab-ctl deploy-page status - gitlab block 상태 확인

 

sudo gitlab-ctl tail - 실시간 로그 확인

sudo gitlab-ctl tail [서비스명] - 해당 서비스에 대한 실시간 로그 확인 (status로 확인한 서비스들)

 

sudo gitlab-rake gitlab:env:info - gitlab system 정보 확인

 

참고 문서 https://docs.gitlab.com/15.5/ee/