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정보를 입력하여
조회하면 아래 이미지와 같이 필수버젼이 나오니까 참고하도록 하자.
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-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 으로 나오면 다음 단계를 진행가능하다.
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/