GitLab 업그레이드 계획 작성
본 문서는 Self-managed GitLab 인스턴스를 업그레이드하기 위한 강력한 계획을 작성하기 위한 안내서로 제공됩니다.
일반적인 참고 사항:
- 가능하면 실제 인스턴스를 업데이트하기 전에 테스트 환경에서 업그레이드를 테스트해야 합니다. 이상적으로 테스트 환경은 실제 환경과 최대한 유사하게 모사되어야 합니다.
-
지원을 통한 작업을 하는 경우 아키텍처의 세부 정보를 공유하세요. 이 정보는 다음을 포함합니다:
- GitLab 설치 방법은?
- 노드의 운영 체제는 무엇인가요? (지원 종료된 OS 버전을 확인하여 나중에 업데이트를 사용할 수 있는지 확인합니다).
- 단일 노드인가요, 아니면 다중 노드 설정입니까? 다중 노드를 사용하는 경우 각 노드에 대한 아키텍처 세부 정보를 공유하세요.
- GitLab Geo를 사용하고 있나요? 사용 중이라면 각 보조 노드에 대한 아키텍처 세부 정보를 공유하세요.
- 우리가 이해해야 할 중요한 설정에 대해 고유하거나 흥미로운 다른 것이 있나요?
- 현재 GitLab 버전에서 알려진 문제가 있나요?
업그레이드 전후 확인 사항
업그레이드 직전과 직후에 메이저 컴포넌트가 올바르게 작동하는지 확인하기 위해 업그레이드 전과 후 확인을 수행하세요.
-
sudo gitlab-rake gitlab:check
-
암호화된 데이터베이스 값이 현재 비밀로 해독될 수 있는지 확인:
sudo gitlab-rake gitlab:doctor:secrets
- GitLab UI에서 다음을 확인하세요:
- 사용자가 로그인할 수 있는지 확인합니다.
- 프로젝트 디렉터리이 표시되는지 확인합니다.
- 프로젝트 이슈 및 Merge Request에 접근할 수 있는지 확인합니다.
- 사용자가 GitLab에서 리포지터리를 복제할 수 있는지 확인합니다.
- 사용자가 GitLab에 커밋을 푸시할 수 있는지 확인합니다.
- GitLab CI/CD의 경우, 다음을 확인하세요:
- 러너가 작업을 가져가는지 확인합니다.
- 도커 이미지가 레지스트리에서 푸시 및 풀이 가능한지 확인합니다.
-
Geo를 사용하는 경우, 프라이머리와 각 보조 노드에서 관련된 확인 사항을 실행하세요:
sudo gitlab-rake gitlab:geo:check
- Elasticsearch를 사용하는 경우, 검색이 성공적으로 되는지 확인하세요.
만일 어떠한 이유에서든 문제가 발생한다면, 문제 해결 방법을 참조하세요.
롤백 계획
업그레이드 중에 문제가 발생할 수 있으므로, 해당 시나리오에 대비한 롤백 계획이 중요합니다. 적절한 롤백 계획은 인스턴스를 마지막 작동 상태로 되돌릴 수 있는 명확한 경로를 만듭니다. 인스턴스 백업 및 복원 방법으로 구성됩니다.
GitLab 백업
GitLab 및 모든 데이터(데이터베이스, 리포지터리, 업로드, 빌드, 아티팩트, LFS 객체, 레지스트리, 페이지)의 백업을 만드는 것은 중요합니다. 이를 통해 업그레이드에 문제가 발생할 경우 GitLab을 작동 상태로 되돌릴 수 있습니다:
- GitLab 백업을 만듭니다. 설치 방법에 따라 지침에 따르도록 합니다. 비밀 및 구성 파일을 백업하는 것을 잊지 마세요.
- 또는 인스턴스의 스냅숏을 만듭니다. 다중 노드 설치인 경우 모든 노드에 대해 스냅숏을 만들어야 합니다. 이 프로세스는 GitLab 지원 범위를 벗어납니다.
GitLab 복원
운영 환경과 유사한 테스트 환경이 있다면, 모든 것이 의도한 대로 작동하는지 확인하기 위해 복원을 테스트해야 합니다.
GitLab 백업을 복원하기 위해:
- 복원하기 전에 백업 및 새 GitLab 인스턴스의 사전 요구 사항을 읽어보세요. 가장 중요한 것은 백업된 버전과 새 GitLab 인스턴스 버전이 같아야 합니다.
- GitLab 복원을 수행합니다. 설치 방법에 따라 지침에 따르도록 합니다. 비밀 및 구성 파일이 복원되었는지 확인하세요.
- 스냅숏에서 복원하는 경우, 이를 수행하는 단계를 알아두세요. 이 프로세스는 GitLab 지원 범위를 벗어납니다.
업그레이드 계획
업그레이드 계획을 위해 먼저 인스턴스에 가장 적합한 계획의 개요를 작성한 후 관련 기능을 업그레이드하세요.
- 관련 문서를 읽고 이해하여 업그레이드 계획을 생성하세요:
- 어떤 버전으로 업그레이드해야 하는지:
- 따를 업그레이드 경로를 결정합니다.
- 현재 버전 및 대상 버전 모두에 대한 버전별 업데이트 지침을 고려하세요.
- 버전별 변경 사항을 확인하세요.
- 대상 GitLab 버전과의 OS 호환성을 확인하세요.
- 백그라운드 마이그레이션으로 인한 추가 업그레이드 이전에 일시 중지할 계획을 수립하세요. 모든 마이그레이션은 완료되어야 합니다 다음 업그레이드가 진행되기 전에.
- 시작 버전에서 사용 가능한 경우, 업그레이드 중 유지 보수 모드를 활성화하는 것을 고려하세요.
- PostgreSQL에 대해:
- 왼쪽 사이드바에서 아래쪽에 있는 관리 영역을 선택합니다.
- 사용 중인 PostgreSQL 버전을 찾습니다. PostgreSQL을 업그레이드해야 한다면, 관련 패키지 또는 비패키지 (패키지형 PostgreSQL 서버를 업그레이드 및 비패키지형 PostgreSQL 데이터베이스를 업그레이드) 단계를 고려하세요.
추가 기능
일반적인 정보 외에도 특별한 계획이 필요한 몇 가지 기능을 활성화할 수 있습니다.
Geo, 외부 Gitaly, 또는 Elasticsearch와 관련이 없는 기능에 대한 섹션은 무시해도 좋습니다.
외부 Gitaly
외부 Gitaly 서버를 사용하는 경우, 응용 프로그램 서버를 업그레이드하기 전에 해당 서버를 더 최신 버전으로 업그레이드해야 합니다.
Geo
Geo를 사용하는 경우:
- Geo 업그레이드 문서를 검토하세요.
- Geo 버전별 업데이트 지침에 대해 읽어보세요.
- 데이터베이스를 업그레이드할 때 Geo에 특화된 단계를 검토하세요.
- 각 Geo 사이트(주 서버 및 각 보조 서버)에 대한 업그레이드 및 롤백 계획을 수립하세요.
Runners
GitLab을 업데이트한 후, 러너를 새 GitLab 버전에 맞게 업그레이드하세요.
Kubernetes용 GitLab 에이전트
GitLab과 연결된 Kubernetes 클러스터가 있는 경우, GitLab용 Kubernetes 에이전트를 업그레이드하여 새 GitLab 버전과 일치시키세요.
Elasticsearch
GitLab을 업데이트하기 전에 보류 중인 고급 검색 마이그레이션을 확인하고 완료된 것을 확인하세요.
GitLab을 업데이트한 후, 새 버전이 호환되지 않을 경우 Elasticsearch를 업그레이드해야 할 수 있습니다. Elasticsearch의 업그레이드는 GitLab 지원 범위를 벗어납니다.
문제 해결
모든 것이 계획대로 진행되지 않는다면:
- 시급한 문제인 경우, 나중에 분석하기 위해 오류를 복사하고 로그를 수집한 후 마지막 작동 버전으로 롤백하세요. 데이터를 수집하는 데 도움이 될 다음 도구를 사용할 수 있습니다:
- 지원이 필요한 경우:
- GitLab 지원팀 또는 고객 성공 매니저에게 문의하세요.
- 상황이 지원 요구를 충족시키고 비상 지원이 포함된 계획인 경우, 비상 티켓을 생성하세요.