개요
내가 여기 입사하기도 전에 AWS EC2 instance에 설치되어있던,
그리고 현재 개발용으로 사용중인 Gitlab은 버전 13.10.5이다.
2021년 6월 버전이다.
고작 3년밖에 안 되었지만 gitlab 생태계에는 고물 버전에 가깝다.
최신 버전으로 업데이트 요청사항이 있었다.
얼핏 드는 생각은
Postgresql 마이그레이션 할 때처럼
기존 configuration과 data dump 떠놓고
최신 이미지로 docker container 올리고 데이터 이관시키면 된다고 생각했다.
그러나 시행착오 끝에 이 방법은 통하지 않는다는 것을 알았다.
이 방법은 똑같은 버전으로 다른 곳에 이관시킬 때나 써먹는 방법이다.
그 이유는 major 버전 뿐만 아니라 minor 버전도 data 이관시
안에 여러가지 복잡한 컴포넌트들(내부 postgres, prometheus 등)이 같이 업데이트 되기 때문이다.
업데이트
docker-compose 작성
입사 전 설치된 것이라 docker-compose.yaml
파일이 없다.
아마도 그냥 docker run
command로 설치된 것 같다.
일단 EC2에 mount되어있는 volume 경로를 살피고
현재 설치되어있는 docker container가 다음 형태의 파일일 것이라 예측하고 작성하였다.
docker-compose.yaml
(url은 보안상 변경)
version: '3.8'
services:
gitlab:
image: gitlab/gitlab-ce:13.10.5-ce.0
container_name: gitlab
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'gitlab.example.com'
gitlab_rails['gitlab_shell_ssh_port'] = 8022
ports:
- '8001:80'
- '443:443'
- '8022:22'
volumes:
- '/data/gitlab/config:/etc/gitlab'
- '/data/gitlab/logs:/var/log/gitlab'
- '/data/gitlab/data:/var/opt/gitlab'
shm_size: '512m'
docker stop gitlab
docker rm gitlab
을 하고
docker compose up -d
실행 → 기존 Gitlab이 잘 유지 되면서 실행이 되었다.
단계적 업데이트
다음 페이지에 가면 추천 업데이트 단계가 나온다.
https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?current=13.10.5&target=17.4.2&distro=docker&edition=ce
요약하면
이러한 13단계를 거쳐서 업그레이드 해야 한다.
중요한 것은 major 버전 업그레이드를 위해서 이전 major 버전의 마지막 버전까지 업그레이드를 해야한다.
docker compose up -d
를 하면 container가 뜨는데 약3분20초쯤 소요된다.
웹페이지에 접속을 한다.
중요 : 성공적으로 뜨면 바로 docker compose down
을 하면 안 된다.
(이거 몰라서 무한 삽질)
Background Migrations
13버전까지는 웹페이지만 뜨면 container를 바로 죽이고 업그레이드 해도 된다.
그러나 14버전부터는 달라졌다.
다음 페이지를 보면
https://gitlab-docs.infograb.net/ee/update/versions/gitlab_14_changes.html
이런 문구가 써있다.
이전 GitLab 14 릴리스에서 14.3.Z로 업그레이드하기 전에 일괄 배경 마이그레이션이 완료 되었는지 확인하세요.
- 배치된 배경 마이그레이션 상태를 확인하려면:
- 왼쪽 사이드바에서 가장 아래에서 관리 영역을 선택합니다.
- 모니터링 > 배경 마이그레이션을 선택합니다.
- 미완료된 마이그레이션을 보려면 대기 중 또는 완료 중을 선택하고, 완료되지 않은 마이그레이션에 대해서는 실패함을 선택합니다.
이것이 무슨 뜻이냐면
13.12 버전까지는 Admin 메뉴 > Monitoring에 들어가면 화면이 다음과 같다.
Background Jobs에서 '예약' 탭에서 자동으로 마이그레이션해주는 작업들이 container가 뜨고 나서도 진행된다.
14버전부터는 Admin 메뉴 > Monitoring에 다음과 같이 아예 Background Migrations
라는 메뉴가 따로 생겼다.
docker container가 뜨고, 웹페이지에 접속이 되더라도
여기서 Background Migrations 작업이 전부 완료가 되어야지만
다음 단계로 버전 업그레이드를 할 수 있다. (보통 한 버전당 약20~30분쯤 소요된다.)
만약 중간에 끊고 업그레이드하면 data migration이 완료되지 않았으니
CLI command를 통해 수동으로 마이그레이션하라고 나오는데 실행해도 잘 되지 않는다.
위 작업들이 완료되면 우선 다음 명령을 한 번 해준다.
> docker exec -it gitlab gitlab-ctl reconfigure
위 명령어는 업그레이드 될 때 자동으로 실행되는 것 같지만
설정도 업데이트되었는지 확인하기 위해 한 번 더 실행해주는 것.
이제 비로소
docker compose down
docker-compose.yaml
file을 에서 base image 한 줄 수정
image: gitlab/gitlab-ce:14.3.6-ce.0
그리고 다시
docker compose up -d
그리고 버전 단계마다 위 절차를 계속 반복해주면 된다.
나같은 경우는 13단계 x 30분 = 6시간 30분이 걸렸다.
'DevOps와 Infra > DevOps 일반' 카테고리의 다른 글
gitlab 서로다른 레포지토리 병합 미러링 (1) | 2024.09.04 |
---|---|
SSL Let's encrypt wildcard 인증서 생성하기 (1) | 2024.06.21 |
[와탭] 애플리케이션 모니터링에서 SQL 변수 확인 가이드 (0) | 2024.03.28 |
Git Branch 전략 / Git Workflow 전략 (0) | 2024.03.24 |