Container Registry에서 Artifact Registry로 자동 마이그레이션

이 문서에서는 Container Registry에서 pkg.dev Artifact Registry 저장소로 전환하는 데 필요한 단계를 설명합니다.

대부분의 Container Registry 사용자는 pkg.dev 저장소가 아닌 Artifact Registry에 호스팅된 gcr.io 저장소로 전환해야 하므로 Artifact Registry의 gcr.io 저장소와 pkg.dev 저장소 간의 차이를 이해하는 경우에만 이 안내를 따르세요.

자동 마이그레이션 도구는 선택한 전환 경로에 따라 다음 작업을 수행할 수 있습니다.

  • 해당 리전의 gcr.io 프로젝트에 대해 Artifact Registry에 pkg.dev 저장소를 만듭니다.
  • 저장소에 대한 IAM 정책을 제안하고 사용자 환경설정에 따라 정책을 적용하거나 애플리케이션을 건너뜁니다.
  • Container Registry에 저장된 모든 컨테이너 이미지를 Artifact Registry pkg.dev 저장소에 복사합니다.

시작하기 전에

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. Enable the Artifact Registry API.

    Enable the API


    이 단계를 건너뛰면 자동 이전 도구에서 Artifact Registry API를 사용 설정하라는 메시지를 표시합니다.

필요한 역할

자동 마이그레이션 도구를 사용하는 모든 전환 옵션에는 다음 역할이 필요합니다.

서비스 계정 역할:

Artifact Registry로 이전하려는 각 프로젝트의 Artifact Registry 서비스 계정에 다음 역할을 부여해야 합니다.

Artifact Registry 서비스 계정에 Container Registry에서 Artifact Registry로 이미지를 복사하기 위해 필요한 권한을 확보하려면 관리자에게 Artifact Registry 서비스 계정에 Container Registry 프로젝트에 대한 스토리지 객체 뷰어(roles/storage.objectViewer) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 Artifact Registry 서비스 계정에 필요한 권한을 부여할 수도 있습니다.

사용자 역할:

pkg.dev Artifact Registry 저장소로 전환하는 데 필요한 권한을 얻으려면 관리자에게 이전하려는 Google Cloud 조직 또는 프로젝트에 대한 Artifact Registry Container Registry 이전 관리자 역할 (roles/artifactregistry.containerRegistryMigrationAdmin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참고하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

pkg.dev Artifact Registry 저장소로 마이그레이션

  1. gcr.io 프로젝트를 pkg.dev Artifact Registry 저장소로 마이그레이션하려면 다음 명령어를 실행합니다.

    gcloud artifacts docker upgrade migrate \
        --from-gcr=GCR_HOSTNAME/GCR_PROJECT \
        --to-pkg-dev=AR_PROJECT/AR_REPOSITORY
    

    다음을 바꿉니다.

    • GCR_HOSTNAME: Container Registry 호스트 이름 호스트 이름은 컨테이너 이미지가 저장된 위치에 따라 다릅니다.

      • gcr.io는 미국 내 이미지를 호스팅합니다.
      • us.gcr.io는 미국 내 이미지를 gcr.io가 호스팅하는 이미지와는 다른 스토리지 버킷에서 호스팅합니다.
      • eu.gcr.io는 유럽 연합의 회원국 내에서 이미지를 호스팅합니다.
      • asia.gcr.io는 아시아에 있는 이미지를 호스팅합니다.
    • GCR_PROJECT: Container Registry Google Cloud 프로젝트 ID 프로젝트 ID에 콜론 (:)이 포함되어 있으면 도메인 범위 프로젝트를 참고하세요.

    • AR_PROJECT: Artifact Registry API를 사용 설정한 Google Cloud 프로젝트 ID

    • AR_REPOSITORY: Artifact Registry 저장소의 이름

마이그레이션 도구는 다음 단계를 완료합니다.

  • 저장소가 아직 없으면 Artifact Registry 저장소를 만듭니다.
  • 저장소에 대한 IAM 정책을 제안하고 사용자 환경설정에 따라 정책을 적용하거나 애플리케이션을 건너뜁니다.
  • 지정된 Container Registry 리전과 프로젝트의 이미지를 Artifact Registry 저장소에 복사합니다.

지난 30~180일 동안 Container Registry에서 가져온 이미지만 복사하려면 --recent-images=DAYS 플래그를 포함하면 됩니다. DAYS를 도구에서 가져오기 여부를 확인해야 하는 일수(30~150일)로 바꿉니다.

오류나 시간 초과가 발생하면 명령어를 안전하게 다시 실행할 수 있으며 완료된 단계를 건너뜁니다.

이미지 복사

실행 도구는 컨테이너 이미지를 실행할 때 자동으로 이미지를 복사하지만, 자동 마이그레이션의 다른 모든 단계를 건너뛰려면 도구를 사용하여 --copy-only 플래그를 전달할 수 있는 Artifact Registry에 이미지를 복사할 수 있습니다.

Container Registry에서 pkg.dev Artifact Registry 저장소로 이미지를 복사하려면 다음 명령어를 실행합니다.

gcloud artifacts docker upgrade migrate \
    --from-gcr=GCR_HOSTNAME/GCR_PROJECT \
    --to-pkg-dev=AR_PROJECT/AR_REPOSITORY \
    --copy-only

다음을 바꿉니다.

  • GCR_HOSTNAME: Container Registry 호스트 이름 호스트 이름은 컨테이너 이미지가 저장된 위치에 따라 다릅니다.

    • gcr.io는 미국 내 이미지를 호스팅합니다.
    • us.gcr.io는 미국 내 이미지를 gcr.io가 호스팅하는 이미지와는 다른 스토리지 버킷에서 호스팅합니다.
    • eu.gcr.io는 유럽 연합의 회원국 내에서 이미지를 호스팅합니다.
    • asia.gcr.io는 아시아에 있는 이미지를 호스팅합니다.
  • GCR_PROJECT: Container Registry Google Cloud 프로젝트 ID 프로젝트 ID에 콜론 (:)이 포함되어 있으면 도메인 범위 프로젝트를 참고하세요.

  • AR_PROJECT: Artifact Registry API를 사용 설정한 Google Cloud 프로젝트 ID

  • AR_REPOSITORY: Artifact Registry 저장소의 이름

이 도구는 모든 마이그레이션 단계를 건너뛰고 Container Registry의 지정된 위치 및 프로젝트에서 Artifact Registry 저장소에 이미지를 복사합니다.

프로세스 중 오류나 시간 초과가 발생하는 경우 --copy-only 플래그를 사용하여 이미지 복사를 다시 시작할 수도 있습니다.

다음 단계