업그레이드 전 확인 사항
GitLab v19.5Offering: GitLab Self-Managed
요약
GitLab 인스턴스를 업그레이드하기 전에 다음을 수행해야 합니다. 업그레이드를 계획할 때 다음을 수행합니다. 업그레이드 전 정보를 모두 수집했다면 사전 단계 수행으로 넘어갈 수 있습니다. 업그레이드 중에는 문제가 발생할 수 있으므로 롤백 계획을 마련하는 것이 중요합니다.
GitLab 인스턴스를 업그레이드하기 전에 다음을 수행해야 합니다.
- 업그레이드 전 정보를 수집해 업그레이드를 준비합니다.
- GitLab 자체를 업그레이드하기 전에 사전 단계를 수행합니다.
업그레이드 전 정보 수집#
업그레이드를 계획할 때 다음을 수행합니다.
- GitLab 릴리스 및 유지 관리 정책을 검토합니다.
- 호환성을 보장하기 위해 GitLab 여러 버전에 대한 GitLab 업그레이드 노트를 참고합니다.
- 관련이 있다면 대상 GitLab 버전과의 OS 호환성을 확인합니다.
- Geo를 사용 중이라면 다음을 수행합니다.
- Geo 업그레이드 문서를 검토합니다.
- GitLab 업그레이드 노트에서 Geo 관련 정보를 검토합니다.
- 데이터베이스 업그레이드 시 Geo 관련 단계를 검토합니다.
- 각 Geo 사이트(프라이머리와 각 세컨더리)에 대한 업그레이드 및 롤백 계획을 작성합니다.
- 필요한 업그레이드 정지 지점을 포함해 인스턴스에 적합한 업그레이드 경로를 결정합니다. 업그레이드 정지 지점이 있으면 여러 차례 업그레이드를 수행해야 할 수 있습니다.
- 업그레이드 상태 점검을 실행해 잠재적 문제를 조기에 찾아 해결합니다.
- 다음을 문서화한 업그레이드 계획을 작성합니다.
- 인스턴스를 업그레이드하는 단계. 가능하고 필요하다면 무중단 업그레이드를 포함합니다.
- 업그레이드가 순조롭게 진행되지 않을 경우의 단계. 필요 시 GitLab 롤백 방법을 포함합니다.
- 업그레이드 계획을 운영 환경의 복제본에서 테스트합니다. 이렇게 하면 예기치 않은 중단의 위험을 줄일 수 있고 잠재적으로 장시간 실행되는 마이그레이션의 소요 시간을 측정하는 데 도움이 됩니다.
업그레이드 전 정보를 모두 수집했다면 사전 단계 수행으로 넘어갈 수 있습니다.
롤백 계획 및 백업 작성#
업그레이드 중에는 문제가 발생할 수 있으므로 롤백 계획을 마련하는 것이 중요합니다. 적절한 롤백 계획은 GitLab 인스턴스를 마지막으로 정상 작동하던 상태로 되돌리는 명확한 경로를 제공하며 다음으로 구성됩니다.
- 인스턴스를 백업하는 절차.
- 인스턴스를 복원하는 절차.
필요해지기 전에 롤백 계획을 테스트해야 합니다. 롤백에 필요한 단계에 대한 개요는 이전 GitLab 버전으로 롤백하기를 참고합니다.
GitLab 백업 만들기#
업그레이드에 문제가 발생했을 때 GitLab을 롤백할 수 있도록 다음 중 하나를 수행합니다.
- GitLab 백업을 만듭니다. 설치 방법에 따른 안내를 따라야 하며 시크릿 및 설정 파일을 반드시 백업해야 합니다.
- 인스턴스의 스냅샷을 만듭니다. 인스턴스가 멀티 노드 설치라면 모든 노드의 스냅샷을 만들어야 합니다. 이 과정은 GitLab Support의 지원 범위에 포함되지 않습니다.
GitLab 롤백#
운영 환경을 모사한 테스트 환경이 있다면 예상대로 모두 정상 작동하는지 확인하기 위해 복원을 테스트합니다.
GitLab 백업을 복원하려면 다음을 수행합니다.
- 복원 사전 요구 사항을 참고합니다. 가장 중요한 점은 백업된 GitLab 인스턴스와 새 GitLab 인스턴스의 버전이 동일해야 한다는 것입니다.
- 설치 방법에 따른 안내를 따라 GitLab을 복원합니다.
- 시크릿 및 설정 파일도 함께 복원되었는지 확인합니다.
스냅샷에서 복원하는 경우, 그 방법은 이미 알고 있어야 합니다. 이 과정은 GitLab Support의 지원 범위에 포함되지 않습니다.
사전 단계 수행#
업그레이드를 수행하기 직전에 다음을 수행합니다.
- 업그레이드 상태 점검을 다시 실행합니다.
- 사용 중인 선택적 기능에 대한 업그레이드를 수행합니다.
업그레이드 상태 점검 실행#
업그레이드 직전과 직후에 GitLab의 주요 구성 요소가 정상 작동하는지 확인하기 위해 업그레이드 상태 점검을 실행합니다.
-
sudo gitlab-rake gitlab:check -
모든 백그라운드 데이터베이스 마이그레이션의 상태를 확인합니다. 각 업그레이드 전에 모든 마이그레이션이 완료되어야 합니다. 백그라운드 마이그레이션이 완료될 시간을 확보하려면 메이저·마이너 릴리스 사이의 업그레이드 간격을 넓혀야 합니다.
-
암호화된 데이터베이스 값을 복호화할 수 있는지 확인합니다.
sudo gitlab-rake gitlab:doctor:secrets -
GitLab UI에서 다음을 확인합니다.
- 사용자가 로그인할 수 있습니다.
- 프로젝트 목록이 표시됩니다.
- 프로젝트 이슈와 머지 리퀘스트에 접근할 수 있습니다.
- 사용자가 GitLab에서 리포지터리를 클론할 수 있습니다.
- 사용자가 GitLab에 커밋을 푸시할 수 있습니다.
-
GitLab CI/CD에 대해 다음을 확인합니다.
- 러너가 job을 가져옵니다.
- 레지스트리에서 Docker 이미지를 푸시하고 풀할 수 있습니다.
-
Geo를 사용 중이라면 기본 사이트와 각 보조 사이트에서 관련 점검을 실행합니다.
sudo gitlab-rake gitlab:geo:check -
Elasticsearch를 사용 중이라면 검색이 정상적으로 되는지 확인합니다.
-
선택 사항. 패키지 가용성을 테스트하고 설치 시간을 줄이려면 공식 리포지터리에서 패키지를 미리 다운로드합니다.
문제가 발생하면 지원을 요청합니다.
선택적 기능에 대한 업그레이드#
GitLab 인스턴스 설정에 따라 GitLab을 업그레이드하기 전에 다음과 같은 추가 단계가 필요할 수 있습니다.
-
외부 Gitaly 서버를 사용 중이라면 GitLab 자체를 업그레이드하기 전에 Gitaly 서버를 새 버전으로 업그레이드합니다. 이렇게 하면 애플리케이션 서버의 gRPC 클라이언트가 이전 Gitaly 버전이 지원하지 않는 RPC를 보내는 상황을 방지할 수 있습니다.
-
GitLab에 연결된 Kubernetes 클러스터가 있다면 새 GitLab 버전에 맞춰 Kubernetes 용 GitLab 에이전트를 업그레이드합니다.
-
고급 검색(Elasticsearch)을 사용 중이라면 대기 중인 마이그레이션을 확인해 고급 검색 마이그레이션이 완료되었는지 확인합니다.
gitlab:checkRake 작업도 대기 중인 고급 검색 마이그레이션이 있는지 보고합니다. 이 검사는 업그레이드를 중단시키지 않으므로 출력을 읽고 결과에 따라 조치해야 합니다.GitLab을 업그레이드한 뒤 새 버전이 호환성을 깨는 경우 Elasticsearch를 업그레이드해야 할 수 있습니다. Elasticsearch 업데이트는 GitLab Support의 지원 범위에 포함되지 않습니다.
CI/CD 파이프라인 및 job 일시 중지#
대부분의 GitLab 인스턴스 유형에서는 업그레이드 중 CI/CD 파이프라인과 job을 일시 중지해야 합니다.
GitLab Runner가 job을 처리하는 동안 GitLab 인스턴스를 업그레이드하면 트레이스 업데이트가 실패합니다. GitLab 이 다시 온라인 상태가 되면 트레이스 업데이트는 자동으로 복구되어야 합니다. 트레이스 업데이트가 자동으로 복구되지 않으면 오류에 따라 GitLab Runner가 재시도하거나 job 처리를 종료합니다.
GitLab Runner는 job 아티팩트 업로드를 세 번 시도하며, 그 이후에는 job 이 실패합니다.
CI/CD 파이프라인과 job을 일시 중지하려면 다음을 수행합니다.
-
러너를 일시 중지합니다.
-
/etc/gitlab/gitlab.rb파일에 다음을 추가해 새 job 시작을 차단합니다.nginx['custom_gitlab_server_config'] = "location = /api/v4/jobs/request {\n deny all;\n return 503;\n}\n" -
GitLab을 재구성합니다.
sudo gitlab-ctl reconfigure -
모든 job 이 끝날 때까지 기다립니다.
GitLab 업그레이드를 완료했다면 다음을 수행합니다.
- 러너의 일시 중지를 해제합니다.
- 이전
/etc/gitlab/gitlab.rb변경 사항을 되돌려 새 job 시작 차단을 해제합니다.
Support와 함께 작업하기#
업그레이드 계획을 검토하기 위해 Support와 함께 작업 중이라면 아래 질문에 대한 답변과 함께 계획을 문서화해 공유합니다.
- GitLab은 어떻게 설치되어 있습니까?
- 노드의 운영 체제는 무엇입니까? 이후 업데이트가 제공되는지 확인하려면 지원되는 플랫폼을 확인합니다.
- 단일 노드 구성입니까, 멀티 노드 구성입니까? 멀티 노드라면 각 노드에 대한 아키텍처 세부 정보를 문서화해 공유합니다. 어떤 외부 구성 요소를 사용합니까? 예를 들어 Gitaly, PostgreSQL, Redis 등입니다.
- Geo를 사용 중입니까? 그렇다면 각 보조 사이트에 대한 아키텍처 세부 정보를 문서화해 공유합니다.
- 구성에서 특이하거나 중요할 수 있는 다른 점이 있습니까?
- 현재 사용 중인 GitLab 버전에서 알려진 이슈를 겪고 있습니까?
지원 요청#
업그레이드 중 문제가 발생하면 다음을 수행합니다.
- 오류를 복사하고 나중에 분석할 로그를 수집합니다. 데이터를 수집하는 데는 다음 도구를 사용합니다.
- 마지막으로 정상 작동하던 버전으로 롤백합니다.
지원을 받으려면 다음을 수행합니다.
- GitLab Support에 문의합니다. Customer Success Manager가 있다면 함께 문의합니다.
- 상황이 해당 조건을 충족하고 플랜에 긴급 지원이 포함되어 있다면 긴급 티켓을 생성합니다.