GitLab 업그레이드

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

GitLab 업그레이드는 비교적 간단한 프로세스입니다. 그러나 설치 방법, 기존 GitLab 버전의 오래 됨 정도, 주요 버전으로 업그레이드하는지 여부에 따라 복잡성이 증가할 수 있습니다.

각 업그레이드 방법과 관련된 정보가 포함되어 있으므로 전체 페이지를 읽어보십시오.

유지 보수 정책 문서에는 다음과 같은 추가 정보가 포함되어 있습니다:

  • GitLab 제품 버전 관리 방법 해석.
  • 추천 실행 릴리스.
  • 패치 및 보안 패치 릴리스 사용 방법.
  • 코드 변경을 역발행하는 시기.

설치 방법에 따른 업그레이드

설치 방법과 GitLab 버전에 따라 GitLab을 업그레이드하는 여러 공식적인 방법이 있습니다:

Linux 패키지 (Omnibus)

패키지 업그레이드 가이드에는 공식 GitLab 저장소에서 설치된 패키지를 업그레이드하는 데 필요한 단계가 포함되어 있습니다.

공식 저장소를 통해 특정 버전으로 업그레이드하는 방법에 대한 지침도 제공됩니다.

Helm 차트 (Kubernetes)

GitLab은 Helm을 사용하여 Kubernetes 클러스터에 배포할 수 있습니다. 프로덕션 배포의 경우 Cloud Native Hybrid 지침을 따르며, 클라우드 네이티브 GitLab의 무상태 구성 요소는 Kubernetes에서 실행되고, GitLab Helm 차트로, 상태 유지 구성 요소는 Linux 패키지로 컴퓨팅 VM에 배포됩니다.

차트 버전에서 GitLab 버전으로의 매핑을 사용하여 업그레이드 경로를 결정할 수 있습니다.

클라우드 네이티브 하이브리드 설정에서 다운타임을 사용한 다중 노드 업그레이드를 참조하여 업그레이드를 수행하십시오.

프로덕션 환경에 대한 완전한 클라우드 네이티브 배포는 지원되지 않습니다. 그러나 이러한 환경을 업그레이드하는 방법에 대한 지침은 별도 문서에서 찾을 수 있습니다.

도커

GitLab은 Community 및 Enterprise 버전용 공식 도커 이미지를 제공하며, Omnibus 패키지를 기반으로 합니다. 도커를 사용하여 GitLab을 설치하는 방법을 확인하십시오.

직접 컴파일 (소스)

과거에는 업그레이드 지침을 위한 별도 문서를 사용했지만, 지금은 단일 문서를 사용하도록 전환했습니다. 이전의 업그레이드 지침은 아래의 Git 저장소에서 찾을 수 있습니다:

업그레이드 계획

GitLab 업그레이드를 위한 계획 안내서를 확인하십시오 GitLab 업그레이드 계획.

업그레이드 전 백그라운드 마이그레이션 확인

특정 릴리스는 새 버전으로 업그레이드하기 전에 다양한 마이그레이션을 완료해야 할 수 있습니다.

자세한 내용은 백그라운드 마이그레이션을 참조하십시오.

실행 중인 CI/CD 파이프라인 및 작업 처리

GitLab 인스턴스를 업그레이드하는 동안 GitLab Runner가 작업을 처리하는 경우, 추적 업데이트가 실패합니다. GitLab이 온라인 상태로 돌아오면 추적 업데이트가 자동으로 복구됩니다. 그러나 오류에 따라 GitLab Runner는 다시 시도하거나 최종적으로 작업 처리를 종료합니다.

아티팩트의 경우 GitLab Runner는 세 번 시도한 후 작업이 최종적으로 실패합니다.

위 두 가지 시나리오를 해결하려면 업그레이드 전에 다음을 수행하는 것이 좋습니다:

  1. 유지 관리를 계획합니다.
  2. 다음을 /etc/gitlab/gitlab.rb에 추가하여 러너를 일시 중지하거나 새 작업을 차단합니다.

    nginx['custom_gitlab_server_config'] = "location ^~ /api/v4/jobs/request {\n deny all;\n return 503;\n}\n"
    

    그리고 다음과 같이 GitLab을 재구성합니다.

    sudo gitlab-ctl reconfigure
    
  3. 모든 작업이 완료될 때까지 대기합니다.
  4. GitLab을 업그레이드합니다.
  5. GitLab Runner를 업그레이드하여 GitLab 버전과 동일한 버전으로 실행합니다. 두 버전은 동일해야 합니다.
  6. 러너를 다시 실행하고 새 작업을 차단했던 이전 /etc/gitlab/gitlab.rb 변경을 되돌립니다.

보류 중인 고급 검색 마이그레이션 확인

Tier: Premium, Ultimate Offering: Self-managed

이 섹션은 Elasticsearch 통합을 활성화한 경우에만 해당됩니다. 주요 릴리스에서는 현재 버전의 최신 마이너 릴리스부터 고급 검색 마이그레이션이 완료되어야 하므로 메이저 버전 업그레이드 이전에 확인해야 합니다. 보류 중인 마이그레이션은 다음 명령을 실행하여 찾을 수 있습니다.

Linux 패키지 (Omnibus)
sudo gitlab-rake gitlab:elastic:list_pending_migrations
소스에서 직접 컴파일한 경우
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:elastic:list_pending_migrations

고급 검색 마이그레이션이 멈춰있는 경우 어떻게 해야 하나요?

GitLab 15.0에서, ‘DeleteOrphanedCommit’이라는 이름의 고급 검색 마이그레이션이 업그레이드 도중에 영구적으로 멈출 수 있습니다. 이 문제는 GitLab 15.1에서 수정되었습니다.

GitLab 15.0을 사용하는 온프레미스 고객이 고급 검색을 사용하는 경우 성능 저하가 발생할 수 있습니다. 마이그레이션을 정리하려면 15.1 이상으로 업그레이드하십시오.

보류 중인 다른 고급 검색 마이그레이션이 있는 경우 멈춘 마이그레이션을 다시 시도하는 방법을 확인하십시오.

보류 중인 고급 검색 마이그레이션이 완료되기 전에 GitLab을 업그레이드하면 새 버전에서 제거된 보류 중인 마이그레이션이 실행되거나 다시 시도될 수 없습니다. 이 경우 처음부터 색인을 다시 생성해야 합니다.

‘Elasticsearch 버전 호환되지 않음’ 오류에 대해 어떻게 해야 하나요?

귀하의 Elasticsearch 또는 OpenSearch 버전이 GitLab 버전과 호환 가능한지 확인하십시오.

다운타임 없이 업그레이드

다운타임 없이 업그레이드하는 방법을 읽어보세요.

새 주요 버전으로 업그레이드

주요 버전을 업그레이드하려면 더 많은 주의가 필요합니다. 하위 호환되지 않는 변경 사항은 주요 버전을 위해 예약되어 있습니다. 주요 업그레이드에는 다음 단계가 필요합니다:

  1. 지원되는 업그레이드 경로를 식별합니다. 이전 주요 버전의 마지막 마이너 릴리스는 항상 마이너 버전에서 등장한 백그라운드 마이그레이션이 도입되었기 때문에 필수적인 단계입니다.
  2. 새 주요 버전으로 업그레이드하기 전에 백그라운드 마이그레이션이 완전히 완료되었는지 확인합니다.
  3. Elasticsearch 통합을 활성화한 경우, 새 주요 버전으로 업그레이드하기 전에 모든 고급 검색 마이그레이션이 완료되었는지 확인합니다.
  4. GitLab 인스턴스에 연결된 러너가 있는 경우 현재 GitLab 버전과 일치하도록 러너를 업그레이드하는 것이 매우 중요합니다. 이는 GitLab 버전과의 호환성을 보장합니다.

업그레이드 경로

여러 개의 GitLab 버전을 한 번에 업그레이드하는 것은 다운타임을 받아들이는 경우에만 가능합니다. 다운타임을 원하지 않는 경우, 다운타임 없이 업그레이드하는 방법을 참조하십시오.

지원되는 업그레이드 경로에 대한 동적인 예제를 보려면 업그레이드 경로 도구를 사용해 보세요. 이 도구는 GitLab 지원팀에서 유지보수합니다. 이 도구를 향상시키고 피드백을 제공하여 도움을 주려면 upgrade-path 프로젝트에서 이슈를 만들거나 MR을 생성하십시오.

업그레이드할 때:

  1. 귀하의 버전이 업그레이드 경로에서 어디에 있는지 확인합니다:

  2. 필수 업그레이드 중단을 확인합니다.
  3. 버전별 업그레이드 지침을 참고하세요.
  4. GitLab을 해당 지침에 따라 업그레이드하세요.
note
명시적으로 지정되지 않은 경우, 업그레이드할 때 버전은 major.minor 릴리스의 최신 패치 릴리스로 업그레이드하는 것이 좋습니다. 예를 들어 13.8.0가 아닌 13.8.8입니다. 이는 업그레이드 경로에서 중단해야 할 major.minor 버전에 대한 이슈와 관련된 문제의 수정 사항이 있을 수 있기 때문입니다. 특히 주요 버전 주변에는 중요한 데이터베이스 스키마와 마이그레이션 패치가 포함되어 있을 수 있습니다.

필수 업그레이드 중지점

필수 업그레이드 중지점은 나중에 업그레이드하기 전에 반드시 업그레이드해야 하는 GitLab 버전입니다. 필수 업그레이드 중지점을 설정하여 필요할 때 적절한 업그레이드 중지와 다운타임을 더 신중하게 계획할 수 있습니다. GitLab 16.x 동안 우리는 필수 업그레이드 중지점을 미리 예정하여 업그레이드를 계획할 때 이를 고려하도록 하고 있습니다.

이전 GitLab 버전

이전 GitLab 버전으로 업그레이드하는 정보는 문서 아카이브에서 확인할 수 있습니다. 아카이브의 문서 버전에는 이전 GitLab 버전에 대한 버전별 정보가 포함되어 있습니다.

예를 들어, GitLab 15.11의 문서에는 GitLab 12부터의 버전에 대한 정보가 포함되어 있습니다.

에디션 간의 업그레이드

GitLab은 두 가지 버전으로 제공됩니다: MIT 라이센스로 제공되는 커뮤니티 에디션 및 이에 기반한 추가 기능이 포함된 엔터프라이즈 에디션으로, 주로 100명 이상의 사용자를 대상으로 하는 조직을 위한 추가 기능이 포함되어 있습니다.

아래에서 GitLab 에디션을 변경하는 데 도움이 되는 몇 가지 가이드를 찾을 수 있습니다.

커뮤니티 에디션에서 엔터프라이즈 에디션으로

참고: 다음 가이드는 엔터프라이즈 에디션 구독자를 대상으로 합니다.

GitLab 설치를 커뮤니티 에디션에서 엔터프라이즈 에디션으로 업그레이드하려면 아래 가이드를 따르세요.

  • 소스 CE에서 EE로의 업그레이드 가이드 - 단계는 버전 업그레이드와 매우 유사합니다: 서버를 중지하고 코드를 가져오고, 새 기능을 위한 구성 파일을 업데이트하고, 라이브러리를 설치하고 마이그레이션을 하며, init 스크립트를 업데이트하고 애플리케이션을 시작하고 상태를 확인합니다.
  • Omnibus CE에서 EE로의 전환 - Omnibus GitLab 커뮤니티 에디션을 엔터프라이즈 에디션으로 업그레이드하는 데 도움이 되는 이 가이드를 따르세요.
  • Docker CE에서 EE로의 전환 - GitLab 커뮤니티 에디션 컨테이너를 엔터프라이즈 에디션 컨테이너로 업그레이드하는 데 도움이 되는 이 가이드를 따르세요.
  • Helm 차트(Kubernetes) CE에서 EE로의 전환 - GitLab 커뮤니티 에디션 Helm 배포를 엔터프라이즈 에디션으로 업그레이드하는 데 도움이 되는 이 가이드를 따르세요.

엔터프라이즈 에디션에서 커뮤니티 에디션으로

엔터프라이즈 에디션 설치를 커뮤니티 에디션으로 다운그레이드하려면 프로세스를 가능한 부드럽게 진행하기 위해 이 가이드를 따를 수 있습니다.

버전별 업그레이드 지침

매월 GitLab의 주요 버전, 소규모 버전 및 패치 릴리스가 발표되며 릴리스 포스트와 함께 게시됩니다. 모든 건너뛰는 버전에 대한 릴리스 포스트를 읽어보시기 바랍니다. 주요 및 소규모 릴리스 포스트의 끝에는 특히 다음 점을 확인해야 하는 세 가지 섹션이 있습니다:

  • 지원 중단
  • 삭제
  • 업그레이드에 관한 중요 노트

이에는 다음이 포함됩니다:

  • 업그레이드의 일부로 수행해야 하는 단계입니다. 예를 들어, 8.12에서는 Elasticsearch 인덱스를 다시 생성해야 했습니다. 8.12 이상으로 업그레이드하는 경우, 이전 버전의 GitLab에서 이 작업이 필요합니다.
  • GitLab 13에서 IE11 지원 중단과 같이 지원하는 소프트웨어 버전의 변경 사항이 포함됩니다.

이 섹션의 지침 외에도 GitLab을 설치한 방식에 따라 설치별 업그레이드 지침을 확인해야 합니다.

참고: 루비와 Git 버전과 관련된 구체적인 정보는 Omnibus 설치Helm 차트 배포에 적용되지 않습니다. Omnibus 및 Helm Chart는 적절한 Ruby 및 Git 버전을 가지고 있으며 시스템 이진 파일을 사용하지 않습니다. 따라서 이 두 가지 접근 방식을 사용할 때는 Ruby나 Git을 설치할 필요가 없습니다.

GitLab 16

GitLab 16로 업그레이드하기 전에 GitLab 16 변경 사항을 확인하세요.

GitLab 15

GitLab 15로 업그레이드하기 전에 GitLab 15 변경 사항을 확인하세요.

GitLab 14

GitLab 14로 업그레이드하기 전에 GitLab 14 변경 사항을 확인하세요.

기타