GitLab 업그레이드 계획 작성
이 문서는 Self-Managed GitLab 인스턴스를 업그레이드하기 위한 강력한 계획을 만드는 가이드로 제공됩니다.
일반적인 노트:
- 가능하다면 프로덕션 인스턴스를 업데이트하기 전에 테스트 환경에서 업그레이드를 테스트해야 합니다. 이상적으로는 테스트 환경이 프로덕션 환경과 가능한 가깝게 모방되어야 합니다.
-
지원팀과 작업을 하는 경우 아키텍처의 세부 정보를 공유하세요. 이는 다음과 같은 내용을 포함합니다:
- GitLab 설치 방법은?
- 노드의 운영 체제는 무엇인가요? (나중에 사용할 수 있는 업데이트가 있는지 확인하려면 더 이상 지원되지 않는 OS 버전을 확인하세요).
- 단일 노드이거나 멀티 노드 설정인가요? 멀티 노드라면 각 노드에 대한 아키텍처적인 세부 정보를 공유해주세요.
- GitLab Geo를 사용하고 있는가요? 그렇다면 각 보조 노드에 대한 아키텍처적인 세부 정보를 공유해주세요.
- 우리가 이해해야 할 중요한 유일하거나 흥미로운 설정이 있나요?
- 현재 GitLab 버전에서 알려진 문제가 있나요?
업그레이드 전후 점검
업그레이드 직전과 직후에 GitLab의 주요 구성 요소가 작동하는지 확인하기 위해 업그레이드 전과 업그레이드 후 점검을 수행하세요:
-
sudo gitlab-rake gitlab:check
-
암호화된 데이터베이스 값이 해독될 수 있는지 확인:
sudo gitlab-rake gitlab:doctor:secrets
- GitLab UI에서 다음을 확인합니다:
- 사용자가 로그인할 수 있는지 확인합니다.
- 프로젝트 목록이 표시되는지 확인합니다.
- 프로젝트 이슈 및 병합 요청에 접근할 수 있는지 확인합니다.
- 사용자가 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 버전의 변경 사항을 고려하세요. 자세한 내용은 다음을 참조하세요:
- 대상 GitLab 버전과의 OS 호환성을 확인하세요.
- 필요한 데이터베이스 및 고급 검색 백그라운드 마이그레이션을 확인하세요. 백그라운드 마이그레이션이 있는 경우 추가 업그레이드를 진행하기 전에 일시 중지해야 합니다. 모든 마이그레이션이 완료될 때까지 다음 업그레이드를 시작해서는 안됩니다.
- GitLab 인스턴스에 러너가 연결되어 있는 경우 현재 GitLab 버전과 호환되도록 러너를 업그레이드해야 합니다. 이는 GitLab 버전과의 호환성을 보장합니다.
- 시작하는 버전에서 사용 가능한 경우, 업그레이드 중 유지 보수 모드를 활성화하는 것을 고려해보세요.
- PostgreSQL에 대해:
- 왼쪽 사이드바에서 바닥에 있는 Admin을 선택하세요
- 사용 중인 PostgreSQL 버전을 찾으세요. PostgreSQL 업그레이드가 필요한 경우 패키지 또는 비패키지 관련 단계를 고려해야 합니다.
추가 기능
일반적인 정보 외에도 특별한 계획이 필요한 몇 가지 기능을 활성화할 수 있습니다.
내 설정에 적용되지 않는 기능에 대한 섹션은 무시하셔도 좋습니다. 예를 들어, Geo, 외부 Gitaly, 또는 Elasticsearch와 관련된 섹션 등이 해당됩니다.
외부 Gitaly
외부 Gitaly 서버를 사용 중이라면, 응용 프로그램 서버를 업그레이드하기 전에 더 최신 버전으로 업그레이드해야 합니다.
Geo
Geo를 사용 중이라면:
- Geo 업그레이드 문서를 확인하세요.
- Geo 버전별 업데이트 지침을 읽어보세요:
- 데이터베이스를 업그레이드할 때 Geo별 단계를 확인하세요.
- 각각의 Geo 사이트(기본 및 각 보조)에 대해 업그레이드 및 롤백 계획을 수립하세요.
러너
GitLab을 업데이트한 후, 러너를 새로운 GitLab 버전에 맞게 업그레이드하세요.
GitLab Kubernetes용 에이전트
GitLab과 연결된 Kubernetes 클러스터가 있다면, GitLab Kubernetes용 에이전트를 업그레이드하여 새로운 GitLab 버전에 맞추세요.
Elasticsearch
GitLab을 업데이트하기 전에, 보류 중인 고급 검색 마이그레이션을 확인하여 고급 검색 마이그레이션이 완료되었는지 확인하세요.
GitLab을 업데이트한 후, 새로운 버전이 호환성을 파괴하는 경우, Elasticsearch를 업그레이드해야 할 수 있습니다. Elasticsearch를 업데이트하는 것은 GitLab 지원의 범위를 벗어납니다.
문제 해결
만약 예상과 다르게 진행된다면:
- 시간이 중요한 경우, 나중에 분석할 로그를 복사하여 수집하고, 마지막 작동 버전으로 롤백하세요. 다음 도구를 사용하여 데이터를 수집하는 데 도움을 받을 수 있습니다:
- 지원이 필요한 경우:
- GitLab 지원팀에 문의하고, 있다면 고객 성공 담당자에게 연락하세요.
- 상황이 지원의 범위에 포함되는 경우 및 귀하의 요금제에 비상 지원이 포함된 경우, 비상 티켓을 생성하세요.