원리

호스트 머신의 Volumn으로 지정된 Path에 Git Container의 설정 및 데이터들이 남아있기에 업그레이드 과정중에 도커 컨테이너를 삭제해도 기존 데이터를 가지고 마이그레이션을 진행

유의점

  • 현재 실행되는 도커 컨테이너의 백업 필수
  • 현 도커의 Volume 패스 확인

업그레이드 전 후 확인 사항

1. 일반 구성 확인 (테스트 필요

docker exec -t gitlab-rake gitlab:check

2. 암호화된 데이터베이스 값이 복호화될 수 있는지 확인

docker exec -t gitlab-rake gitlab:doctor:secrets

3. UI에서 확인

  • 로그인
  • 프로젝트 목록의 표시
  • 프로젝트의 Issue와 MergeRequest가 접근이 가능
  • 사용자가 GitLab에서 저장소를 복제
  • 사용자가 GitLab에서 커밋을 푸시

4. GitLab CI/CD에서 확인

  • 러너가 작업을 수집

롤백 계획

백업

컨테이너에서 백업 명령을 수행한다.

docker exec -t <container name> gitlab-backup create

복원

GitLab 복구 - Docker Compose (작성중)

업그레이드

요약

  1. GItlab에서 제공하는 Upgrade Path 확인하기
  2. docker-compose 파일수정 및 이미지 pull
  3. gitlab 재기동 및 Admin → Monitoring → Background Migrations 확인
    1. docker compose up --force-recreate --build -d
  4. Upgrade Path 를 다 수행할 떄 까지 3, 4 반복
  5. Background Migrations 완료 후 기존 docker 이미지 삭제 (docker rmi)

1. Upgrade Path 확인

GitLab은 업그레이드를 위해 버전별로 Migration이 필요할 수 있다. 따라서 GitLab에서는 Upgrade Path라는 툴을 제공한다.

  1. https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/ 에 접속한다.
  2. 현재 버전과 업그레이드할 버전을 선택하고 Distro 에 Docker를 선택한다.
    • 16.11.10 버전에서 18.4.1로 업그레이드 하고 Edition은 Enterprise 설치 방식은 Docker 로 된 경우에 대한 예

      Upgrade Path 설정

  3. Go 버튼을 누른 후 순차 업그레이드 버전을 확인한다.

    Upgrade Path 결과

    • 해당 사진을 확인하면 총 7개의 업그레이드가 필요한 것으로 확인된다.
    • 버전 업그레이드일 시 유의해야 할 사항들도 모두 나오니 잘 살펴보고 업데이트를 수행한다.

2. docker-compose 파일 수정 및 이미지 다운로드

upgrade path에 맞게 docker-compose.yml 를 수정한다.

services:
  gitlab:
    image: 'gitlab/gitlab-ee:17.1.8-ee.0'

그 이후 이미지를 pull한다.

docker compose pull

3. GitLab 재기동 및 Admin → Monitoring → Background Migrations 확인

아래 명령어를 통해 재기동을 수행한다.

docker compose up --force-recreate --build -d # 참고로 해당 명령어를 수행하면 pull을 별도로 할 필요가 없다.

이후 root 계정으로 로그인 후 Admin → Monitoring → Background Migrations 에 진입하여 Queued가 모두 완료될 때 까지 대기한다.

Background Migrations 확인

4. Background Migration이 완료되면 2, 3을 반복한다.

5. Background Migrations 완료 후 기존 docker 이미지 삭제

docker imagesdocker rmi 명령어를 통해 불필요한 이미지를 제거한다.

아래는 그 예시이다

docker rmi gitlab/gitlab-ee:16.11.10-ee.0 gitlab/gitlab-ee:17.1.8-ee.0

Reference