본문 바로가기

System/Git

GitLab-CE Omnibus Migration/Upgrade (CentOS6 => Rocky Linux 8.9)

 

0)설치 개요

CentOS6으로 구성된 GitLab ce Omnibus 구버젼 사용중, EOL이슈로 인하여,

Rocky Linux8.9로의 마이그레이션 작업 및 gitlab-ce를 최신버젼으로 업그레이드 진행하였다.

//아래의 OS 버젼 별 최대 설치 가능 버젼 목록 참고.

https://docs.gitlab.com/ee/administration/package_information/supported_os.html

1)사전 확인 절차

1. gitlab version 확인

사용중인 gitlab 버젼확인을 위해서는 아래와 같이 명령어를 입력한다. 

gitlab-rake gitlab:env:info

2. gitlab 필수 업데이트 구간 확인

마이그레이션 및 업그레이드에 앞서 깃랩의 경우 필수업데이트 구간이 있다.
필수업데이트 구간의 경우 아래 깃에서 제공하는 툴을 사용하면 몇가지 정보를 입력 후 바로 확인할수있다.

https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/

위 URL에 접속하여, Current Version과 Target Version 그리고 에디션 정보및 OS정보를  입력하여 
조회하면 아래 이미지와 같이 필수버젼이 나오니까 참고하도록 하자.

13.6.7 -> 16.7.0 gitlab-ce Centos기반 조회
필수업데이트 구간 확인

3) 작업 순서 

작업순서는 아래와 같은 순서로 진행될 예정이다.

1. old_gitlab backup 
2. new_gitlab restore(동일버젼)

3. new_gitlab upgrade 

1. old_gitlab backup

백업대상인 깃랩서버에서 아래 명령어를 통하여 백업을 진행한다
gitlab 12.2 이상
> gitlab-backup create
gitlab 12.1 이전 
> gitlab-rake gitlab:backup:create

gitlab-backup create

백업이 완료되면 아래와 같은 경고창이뜨는데 해당 내용은 gitlab.rb와 gitlab-secrets.json은 민감데이터이기 때문에,
백업에 포함이 안된다는 내용이다.


백업파일은 별도 설정이 없을경우 /var/opt/gitlab/backups에 생성되니 해당 경로에서 옮기도록하자.

 

백업파일과 /etc/gitlab 하단에있는 gitlab.rb,gitlab-secrets.json파일을 신규서버로 옮기면 작업 완료.

2.  new_gitlab install / restore(동일버젼)

복원 대상 깃랩서버에서 동일버젼의 gitlab을 설치진행한다. 

 

2-1. gitlab package 저장소 추가 

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

 

2-2. gitlab 동일버젼 설치 진행

dnf install gitlab-ce-13.6.7-ce.0.el8

*동일 버젼 패키지명을 정확히 확인하려면 아래 명령어를 통하여 확인하자.

dnf --showduplicates list gitlab-ce

 

설치완료 후 gitlab reconfigure 및  구동

gitlab-ctl reconfigure 

 

2-3. gitlab restore 진행

 

백업파일을 복원 서버의 하기 경로에 옮긴뒤 git:git으로 백업 파일소유자/소유그룹을 변경한다.
/var/opt/gitlab/backups

mv 1704767278_2024_01_09_13.6.7_gitlab_backup.tar /var/opt/gitlab/bakups/
chown git:git /var/opt/gitlab/bakups/1704767278_2024_01_09_13.6.7_gitlab_backup.tar

 

 

restore 진행전 Puma,Sidekiq 데이터 베이스에 연결되는 프로세스들을 중지해준다.

gitlab-ctl stop puma
gitlab-ctl stop sidekiq

종료 후 gitlab-ctl status로 확인

gitlab-backup restore BACKUP= 1704767278_2024_01_09_13.6.7

*파일명이 난수_년_월_일_{gitlab version}_gitlab_backup.tar로 생성되는데 restore시에 난수_년_월_일_{gitlab version}까지만 입력 진행 

복원시에 authorized_key 관련한 부분이 나오는데 이는 git과 연동된 ssh_key에 대한 내용이므로 yes 진행해주면된다.


2-4 restore 후 상태 체크

 

gitlab check)

gitlab-rake gitlab:check

 

전부 OK 떨어질경우 다음 단계 진행 

 

 

3.  new_gitlab Upgrade 

3-1. 사전 준비 작업시 파악해둔 Upgrade Path에 아래 순서에 따라 업데이트 진행

1) 2-2를 참고하여 update 대상 패키지명 확인하여 install 진행 

dnf install gitlab-ce-{version}


*업데이트시 /etc/gitlab에 대한 백업은 진행하나 데이터에 대한 백업은 안되므로, 장애가 걱정 될 경우 전체 백업 진행 후 업그레이드하는걸 권장한다.

2) 업데이트 후 상태 확인

background migration check)

gitlab-rails console -e production
puts Sidekiq::Queue.new("background_migration").size
puts Sidekiq::ScheduledSet.new.select { |r| r.klass == 'BackgroundMigrationWorker' }.size

 

0이 아닐경우 현재 작업중인 프로세스가 있으니 업그레이드 보류

 

위 실행 결과값이 0 으로 나오면 다음 단계를 진행가능하다.

gitlab-ce-14이상에서는 WEB UI상에서 Monitoring=>Background Migration 탭에서 확인이 가능하니 UI로 확인한다.
UI상에서 아래와 같이 
리스트가 보일 경우 완료될때까지 대기할것. 


3) Target 업데이트 버젼까지 1-2 반복

 

# Trouble Shooting 

1. unpacking backup failed


 최소 설치 OS의 경우 tar명령어가 없을수도 있기때문에 설치가 되어있는지 확인 할 것

dnf install tar

 

참고URL 
깃랩 공식 Docs https://docs.gitlab.com/