GitLab 업그레이드 계획 작성

Tier: Free, Premium, Ultimate Offering: Self-managed

본 문서는 Self-managed GitLab 인스턴스를 업그레이드하기 위한 강력한 계획을 작성하기 위한 안내서로 제공됩니다.

일반적인 참고 사항:

  • 가능하면 실제 인스턴스를 업데이트하기 전에 테스트 환경에서 업그레이드를 테스트해야 합니다. 이상적으로 테스트 환경은 실제 환경과 최대한 유사하게 모사되어야 합니다.
  • 지원을 통한 작업을 하는 경우 아키텍처의 세부 정보를 공유하세요. 이 정보는 다음을 포함합니다:
    • GitLab 설치 방법은?
    • 노드의 운영 체제는 무엇인가요? (지원 종료된 OS 버전을 확인하여 나중에 업데이트를 사용할 수 있는지 확인합니다).
    • 단일 노드인가요, 아니면 다중 노드 설정입니까? 다중 노드를 사용하는 경우 각 노드에 대한 아키텍처 세부 정보를 공유하세요.
    • GitLab Geo를 사용하고 있나요? 사용 중이라면 각 보조 노드에 대한 아키텍처 세부 정보를 공유하세요.
    • 우리가 이해해야 할 중요한 설정에 대해 고유하거나 흥미로운 다른 것이 있나요?
    • 현재 GitLab 버전에서 알려진 문제가 있나요?

업그레이드 전후 확인 사항

업그레이드 직전과 직후에 메이저 컴포넌트가 올바르게 작동하는지 확인하기 위해 업그레이드 전과 후 확인을 수행하세요.

  1. 일반 구성 확인:

    sudo gitlab-rake gitlab:check
    
  2. 암호화된 데이터베이스 값이 현재 비밀로 해독될 수 있는지 확인:

    sudo gitlab-rake gitlab:doctor:secrets
    
  3. GitLab UI에서 다음을 확인하세요:
    • 사용자가 로그인할 수 있는지 확인합니다.
    • 프로젝트 디렉터리이 표시되는지 확인합니다.
    • 프로젝트 이슈 및 Merge Request에 접근할 수 있는지 확인합니다.
    • 사용자가 GitLab에서 리포지터리를 복제할 수 있는지 확인합니다.
    • 사용자가 GitLab에 커밋을 푸시할 수 있는지 확인합니다.
  4. GitLab CI/CD의 경우, 다음을 확인하세요:
    • 러너가 작업을 가져가는지 확인합니다.
    • 도커 이미지가 레지스트리에서 푸시 및 풀이 가능한지 확인합니다.
  5. Geo를 사용하는 경우, 프라이머리와 각 보조 노드에서 관련된 확인 사항을 실행하세요:

    sudo gitlab-rake gitlab:geo:check
    
  6. Elasticsearch를 사용하는 경우, 검색이 성공적으로 되는지 확인하세요.

만일 어떠한 이유에서든 문제가 발생한다면, 문제 해결 방법을 참조하세요.

롤백 계획

업그레이드 중에 문제가 발생할 수 있으므로, 해당 시나리오에 대비한 롤백 계획이 중요합니다. 적절한 롤백 계획은 인스턴스를 마지막 작동 상태로 되돌릴 수 있는 명확한 경로를 만듭니다. 인스턴스 백업 및 복원 방법으로 구성됩니다.

GitLab 백업

GitLab 및 모든 데이터(데이터베이스, 리포지터리, 업로드, 빌드, 아티팩트, LFS 객체, 레지스트리, 페이지)의 백업을 만드는 것은 중요합니다. 이를 통해 업그레이드에 문제가 발생할 경우 GitLab을 작동 상태로 되돌릴 수 있습니다:

  • GitLab 백업을 만듭니다. 설치 방법에 따라 지침에 따르도록 합니다. 비밀 및 구성 파일을 백업하는 것을 잊지 마세요.
  • 또는 인스턴스의 스냅숏을 만듭니다. 다중 노드 설치인 경우 모든 노드에 대해 스냅숏을 만들어야 합니다. 이 프로세스는 GitLab 지원 범위를 벗어납니다.

GitLab 복원

운영 환경과 유사한 테스트 환경이 있다면, 모든 것이 의도한 대로 작동하는지 확인하기 위해 복원을 테스트해야 합니다.

GitLab 백업을 복원하기 위해:

  • 복원하기 전에 백업 및 새 GitLab 인스턴스의 사전 요구 사항을 읽어보세요. 가장 중요한 것은 백업된 버전과 새 GitLab 인스턴스 버전이 같아야 합니다.
  • GitLab 복원을 수행합니다. 설치 방법에 따라 지침에 따르도록 합니다. 비밀 및 구성 파일이 복원되었는지 확인하세요.
  • 스냅숏에서 복원하는 경우, 이를 수행하는 단계를 알아두세요. 이 프로세스는 GitLab 지원 범위를 벗어납니다.

업그레이드 계획

업그레이드 계획을 위해 먼저 인스턴스에 가장 적합한 계획의 개요를 작성한 후 관련 기능을 업그레이드하세요.

추가 기능

일반적인 정보 외에도 특별한 계획이 필요한 몇 가지 기능을 활성화할 수 있습니다.

Geo, 외부 Gitaly, 또는 Elasticsearch와 관련이 없는 기능에 대한 섹션은 무시해도 좋습니다.

외부 Gitaly

외부 Gitaly 서버를 사용하는 경우, 응용 프로그램 서버를 업그레이드하기 전에 해당 서버를 더 최신 버전으로 업그레이드해야 합니다.

Geo

Geo를 사용하는 경우:

Runners

GitLab을 업데이트한 후, 러너를 새 GitLab 버전에 맞게 업그레이드하세요.

Kubernetes용 GitLab 에이전트

GitLab과 연결된 Kubernetes 클러스터가 있는 경우, GitLab용 Kubernetes 에이전트를 업그레이드하여 새 GitLab 버전과 일치시키세요.

Elasticsearch

GitLab을 업데이트하기 전에 보류 중인 고급 검색 마이그레이션을 확인하고 완료된 것을 확인하세요.

GitLab을 업데이트한 후, 새 버전이 호환되지 않을 경우 Elasticsearch를 업그레이드해야 할 수 있습니다. Elasticsearch의 업그레이드는 GitLab 지원 범위를 벗어납니다.

문제 해결

모든 것이 계획대로 진행되지 않는다면: