InfoGrab Docs

GitLab이 관리하는 리포지터리 이동

GitLab이 관리하는 리포지터리 이동에 대해 설명합니다.

GitLab이 관리하는 모든 리포지터리를 다른 파일 시스템이나 다른 서버로 이동합니다. GitLab 인스턴스에서 데이터 이동 # GitLab API를 사용하여 Git 리포지터리를 이동합니다: 서버 간. 다른 스토리지 간. 단일 노드 Gitaly에서 Gitaly 클러스터(Praefect)로. GitLab 리포지터리는 프로젝트, 그룹, 스니펫과 연결될 수 있습니다. 이러한 각 유형은 리포지터리를 이동하기 위한 별도의 API가 있습니다. GitLab 인스턴스의 모든 리포지터리를 이동하려면 각 스토리지에 대해 각 유형의 리포지터리를 이동해야 합니다. 각 리포지터리는 이동하는 동안 읽기 전용으로 설정되며 이동이 완료될 때까지 쓸 수 없습니다. 리포지터리를 이동하려면: 모든 로컬 및 클러스터 스토리지 가 GitLab 인스턴스에서 접근 가능한지 확인합니다. 이 예시에서는 <original_storage_name> 과 <cluster_storage_name> 입니다. 새 스토리지가 모든 새 프로젝트를 받도록 리포지터리 스토리지 가중치를 구성 합니다. 이렇게 하면 마이그레이션이 진행되는 동안 기존 스토리지에 새 프로젝트가 생성되지 않습니다. 프로젝트, 스니펫, 그룹에 대한 리포지터리 이동을 예약합니다. Geo 를 사용하는 경우 모든 리포지터리를 다시 동기화 합니다. Sidekiq 파드에서 수평 파드 자동 스케일러를 사용하는 경우 마이그레이션 중에 스케일링을 방지하기 위해 Sidekiq 파드에 대한 HPA를 비활성화 합니다. 프로젝트 이동 # 모든 프로젝트 또는 개별 프로젝트를 이동할 수 있습니다. API를 사용하여 모든 프로젝트를 이동하려면: API를 사용하여 스토리지 샤드의 모든 프로젝트에 대한 리포지터리 스토리지 이동을 예약 합니다. 예: curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \ --header "Content-Type: application/json" \ --data '{"source_storage_name":"<original_storage_name>","destination_storage_name":"<cluster_storage_name>"}' \ "https://gitlab.example.com/api/v4/project_repository_storage_moves" API를 사용하여 가장 최근 리포지터리 이동을 조회 합니다. 응답은 다음 중 하나를 나타냅니다: 이동이 성공적으로 완료됨. state 필드가 finished 임. 이동이 진행 중. 성공적으로 완료될 때까지 리포지터리 이동을 다시 조회합니다. 이동이 실패. 대부분의 실패는 일시적이며 이동을 다시 예약하면 해결됩니다. 이동이 완료된 후 API를 사용하여 프로젝트를 조회 하고 모든 프로젝트가 이동했는지 확인합니다. repository_storage 필드가 이전 스토리지로 설정된 프로젝트는 반환되어서는 안 됩니다. 예: curl --header "PRIVATE-