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

자동 마이그레이션 도구를 사용하여 Container Registry로부터 Artifact Registry 호스팅 gcr.io 저장소 또는 표준 Artifact Registry 저장소로 전환할 수 있습니다.

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

  • 해당 리전의 나열된 각 gcr.io 프로젝트에 대해 Artifact Registry에서 gcr.io 저장소 또는 표준 저장소를 만듭니다.
  • 각 저장소에 대한 IAM 정책을 제안하고 사용자 환경설정에 따라 정책을 적용하거나 애플리케이션을 건너뜁니다.
  • gcr.io 엔드포인트에서 Artifact Registry로 모든 트래픽을 리디렉션합니다.
  • 이미 리디렉션을 사용 설정했더라도 Container Registry에 저장된 모든 컨테이너 이미지를 Artifact Registry gcr.io 저장소 또는 표준 저장소에 복사합니다.

시작하기 전에

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

    gcloud init
  3. 전환 옵션을 선택합니다.
    • Artifact Registry 호스팅 gcr.io 저장소로 전환하는 경우 마이그레이션하려는 Container Registry 프로젝트에서 Artifact Registry API를 사용 설정하세요. 또한 이 단계를 건너뛰면 도구에서 Artifact Registry API를 사용 설정하라는 메시지를 표시합니다.

      Enable the Artifact Registry API.

      Enable the API

    • 표준 Artifact Registry 저장소로 전환하는 경우 Container Registry 컨테이너 이미지를 마이그레이션할 프로젝트에서 Artifact Registry API를 사용 설정합니다. Container Registry가 사용 설정된 동일한 프로젝트 또는 다른 프로젝트를 사용할 수 있습니다.

      Enable the Artifact Registry API.

      Enable the API

필요한 역할

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

Artifact Registry 서비스 계정에 필요한 역할:

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

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

IAM 권장사항을 생성하는 데 필요한 역할:

허용 정책을 분석하는 데 필요한 권한을 얻으려면 관리자에게 마이그레이션할 Container Registry 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 허용 정책을 분석하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

허용 정책을 분석하려면 다음 권한이 필요합니다.

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • 커스텀 IAM 역할을 사용하여 정책 분석: iam.roles.get
  • Google Cloud CLI를 사용하여 정책 분석: serviceusage.services.use

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

다음 역할은 전환 옵션에 따라 다양한 리소스에 부여됩니다.

gcr.io 저장소

Artifact Registry 호스팅 gcr.io 저장소로 전환하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

  • Artifact Registry 저장소를 만들고 개별 저장소에 액세스 권한 부여: Container Registry 이미지가 포함된 Google Cloud 프로젝트의 Artifact Registry 관리자 (roles/artifactregistry.admin) IAM 역할
  • Cloud Storage 스토리지 버킷에 적용된 기존 Container Registry 구성 보기 및 관리: Container Registry 이미지가 포함된 Google Cloud 프로젝트에 대한 스토리지 관리자(roles/storage.admin) IAM 역할

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

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

표준 저장소

표준 Artifact Registry 저장소로 전환하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

  • Artifact Registry 저장소를 만들고 개별 저장소에 액세스 권한 부여: Artifact Registry API가 사용 설정된 Google Cloud 프로젝트의 Artifact Registry 관리자(roles/artifactregistry.admin) IAM 역할
  • Cloud Storage 스토리지 버킷에 적용된 기존 Container Registry 구성 보기 및 관리: Container Registry 이미지가 포함된 Google Cloud 프로젝트에 대한 스토리지 관리자(roles/storage.admin) IAM 역할

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

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

Artifact Registry 호스팅 gcr.io 저장소로 마이그레이션

gcloud artifacts docker upgrade migrate 명령어를 사용하면 Google Cloud 프로젝트 한 개 또는 여러 개를 동시에 마이그레이션할 수 있습니다.

gcr.io 저장소로 마이그레이션하려면 다음 명령어를 실행합니다.

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

여기서 PROJECTS는 Artifact Registry 호스팅 gcr.io 저장소로 마이그레이션하려는 단일 프로젝트의 프로젝트 ID 또는 Artifact Registry 호스팅 gcr.io 저장소로 마이그레이션할 프로젝트 ID의 쉼표로 구분된 목록입니다.

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

  • 해당 리전에 나열된 각 gcr.io 프로젝트에 대해 Artifact Registry에 gcr.io 저장소를 만듭니다.
  • 각 저장소에 대한 IAM 정책을 제안하고 사용자 환경설정에 따라 정책을 적용하거나 애플리케이션을 건너뜁니다.
  • gcr.io 엔드포인트에서 Artifact Registry로 모든 트래픽을 리디렉션합니다. Artifact Registry는 모든 컨테이너 이미지가 Artifact Registry에 복사될 때까지 요청 시 Container Registry에서 누락된 이미지를 복사하여 일시적으로 제공합니다.
  • gcr.io 버킷에 저장된 모든 컨테이너 이미지를 Artifact Registry에서 호스팅되는 새로 생성된 gcr.io 저장소에 복사합니다.
  • 요청 시간 복사를 사용 중지합니다. Artifact Registry에서 호스팅되는 gcr.io 저장소는 더 이상 Container Registry에 종속되지 않습니다.

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

각 이미지의 최근에 업로드된 특정 버전 수를 복사하려면 --last-uploaded-versions=VERSIONS 플래그를 포함하면 됩니다. VERSIONS을 각 이미지에 대해 복사할 버전의 수로 바꿉니다. 복사 중에 새 이미지가 업로드되면 지정된 버전 수보다 많은 버전이 복사될 수 있습니다.

--recent-images 플래그와 --last-uploaded-versions 플래그는 상호 배타적이며 함께 사용할 수 없습니다.

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

표준 Artifact Registry 저장소로 마이그레이션

  1. gcr.io 프로젝트를 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~150일 동안 Container Registry에서 가져온 이미지만 복사하려면 --recent-images=DAYS 플래그를 포함하면 됩니다. DAYS를 도구에서 가져오기 여부를 확인해야 하는 일수(30~150일)로 바꿉니다.

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

이미지 복사

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

Container Registry에서 Artifact Registry에서 호스팅되는 gcr.io 저장소로 이미지를 복사하려면 다음 명령어를 실행합니다.

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS \
    --copy-only

여기서 PROJECTS는 Artifact Registry 호스팅 gcr.io 저장소로 마이그레이션하려는 단일 프로젝트의 프로젝트 ID 또는 Artifact Registry 호스팅 gcr.io 저장소로 마이그레이션할 프로젝트 ID의 쉼표로 구분된 목록입니다.

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

Container Registry에서 표준 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 플래그를 사용하여 이미지 복사를 다시 시작할 수도 있습니다.

다음 단계