GitLab 업그레이드 계획 작성

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

이 문서는 Self-Managed형 GitLab 인스턴스를 업그레이드하기 위한 강력한 계획을 수립하는 데 도움이 되는 가이드로 제공됩니다.

일반적인 참고 사항:

  • 가능하다면 프로덕션 인스턴스를 업데이트하기 전에 테스트 환경에서 업그레이드를 테스트해 보는 것이 좋습니다. 이상적으로는 테스트 환경이 프로덕션 환경과 가능한 가깝게 모방되어야 합니다.
  • 지원과 협업하여 계획을 수립하는 경우 아키텍처 세부 정보를 공유해야 합니다. 이는 다음을 포함합니다.
    • GitLab은 어떻게 설치되었습니까?
    • 노드의 운영 체제는 무엇입니까? (나중의 업데이트가 가능한지 확인하려면 지원되지 않는 OS 버전을 확인하십시오).
    • 단일 노드인지, 다중 노드 설정인지 확인합니다. 다중 노드인 경우, 각 노드에 대한 아키텍처 세부 정보를 공유해야 합니다.
    • GitLab Geo를 사용 중이십니까? 그렇다면 각 보조 노드에 대한 아키텍처 세부 정보를 공유해야 합니다.
    • 우리가 이해해야 할 중요한 것이 될 수 있는 설정 또는 흥미로운 것이 있습니까?
    • 현재 GitLab 버전에서 알려진 문제에 부딪히고 있습니까?

업그레이드 전과 후 확인

업그레이드 직전과 직후에 중요하게 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 서버를 사용 중이라면 애플리케이션 서버를 업그레이드하기 전에 외부 Gitaly 서버를 더 높은 버전으로 업그레이드해야 합니다.

Geo

Geo를 사용 중이라면:

러너

GitLab을 업데이트한 후 러너를 새 GitLab 버전에 맞게 업그레이드합니다.

Kubernetes용 GitLab 에이전트

GitLab과 연결된 Kubernetes 클러스터가 있는 경우 새 GitLab 버전에 맞게 GitLab Kubernetes 에이전트를 업그레이드합니다.

Elasticsearch

GitLab을 업데이트하기 전에 보류 중인 고급 검색 마이그레이션을 확인하여 업데이트가 완료되었는지 확인하십시오.

GitLab을 업데이트한 후에는, 새 버전이 호환성을 깨뜨린 경우 Elasticsearch를 업그레이드해야 할 수 있습니다. Elasticsearch를 업데이트하는 것은 GitLab 지원의 범위를 벗어납니다.

문제 해결

만약 아무것도 계획대로 진행되지 않는다면: