Migrar automaticamente do Container Registry para o Artifact Registry

Este documento descreve as etapas necessárias para fazer a transição do Container Registry para os repositórios do pkg.dev Artifact Registry.

A maioria dos usuários do Container Registry precisa fazer a transição para repositórios gcr.io hospedados no Artifact Registry, não pkg.dev. Portanto, siga estas instruções apenas se você entender a diferença entre repositórios gcr.io e pkg.dev no Artifact Registry.

A ferramenta de migração automática pode realizar as seguintes ações, dependendo do caminho de transição escolhido:

  • Crie um repositório pkg.dev no Artifact Registry para seu projeto gcr.io na região correspondente.
  • Sugerir uma política do IAM para o repositório e aplicá-la ou pular a aplicação, dependendo da preferência do usuário.
  • Copie todas as imagens de contêiner armazenadas no Container Registry para o repositório pkg.dev do Artifact Registry.

Antes de começar

  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


    A ferramenta de migração automática vai solicitar que você ative a API Artifact Registry se você pular esta etapa.

Funções exigidas

Os papéis a seguir são necessários para todas as opções de transição usando a ferramenta de migração automática.

Papéis da conta de serviço:

Você precisa conceder os seguintes papéis à conta de serviço do Artifact Registry para cada projeto que você quer migrar para o Artifact Registry.

Para garantir que a conta de serviço do Artifact Registry tenha as permissões necessárias para copiar imagens do Container Registry para o Artifact Registry, peça ao administrador para conceder à conta de serviço do Artifact Registry o papel do IAM de visualizador de objetos do Storage (roles/storage.objectViewer) no projeto do Container Registry. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

O administrador também pode conceder à conta de serviço do Artifact Registry as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Funções do usuário:

Para receber as permissões necessárias para fazer a transição para os repositórios do pkg.dev Artifact Registry, peça ao administrador para conceder a você o papel de administrador de migração do Artifact Registry Container Registry (roles/artifactregistry.containerRegistryMigrationAdmin) do IAM na Google Cloud organização ou projeto que você quer migrar. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Migrar para repositórios do Artifact Registry pkg.dev

  1. Para migrar seu projeto gcr.io para um repositório do Artifact Registry pkg.dev, execute o seguinte comando:

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

    Substitua:

    • GCR_HOSTNAME pelo nome do host do Container Registry. O nome do host depende de onde as imagens do contêiner são armazenadas:

      • gcr.io hospeda as imagens nos Estados Unidos.
      • us.gcr.io hospeda as imagens nos Estados Unidos, em um bucket de armazenamento separado das imagens hospedadas por gcr.io.
      • eu.gcr.io hospeda as imagens em estados-membros da União Europeia.
      • asia.gcr.io hospeda as imagens na Ásia.
    • GCR_PROJECT com o ID do projeto do Container Registry Google Cloud. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.

    • AR_PROJECT pelo ID do projeto Google Cloud em que você ativou a API Artifact Registry.

    • AR_REPOSITORY pelo nome do repositório do Artifact Registry.

A ferramenta de migração conclui as seguintes etapas:

  • Cria o repositório do Artifact Registry se ele ainda não existir.
  • Sugere uma política do IAM para o repositório e a aplica ou pula a aplicação, dependendo da preferência do usuário.
  • Copia imagens na região e no projeto especificados do Container Registry para o repositório do Artifact Registry.

Se você quiser copiar apenas as imagens extraídas do Container Registry nos últimos 30 a 180 dias, inclua a flag --recent-images=DAYS. Substitua DAYS pelo número de dias, entre 30 e 150, em que a ferramenta vai verificar as solicitações.

Se você encontrar erros ou tempo limite, será possível executar o comando novamente com segurança, e as etapas concluídas serão ignoradas.

Copiar imagens

A ferramenta de migração copia automaticamente as imagens do contêiner quando é executada. No entanto, se você quiser pular todas as outras etapas da migração automática e usar a ferramenta para copiar imagens para o Artifact Registry, transmita a flag --copy-only.

Para copiar imagens do Container Registry para um repositório do Artifact Registry pkg.dev, execute o seguinte comando:

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

Substitua:

  • GCR_HOSTNAME pelo nome do host do Container Registry. O nome do host depende de onde as imagens do contêiner são armazenadas:

    • gcr.io hospeda as imagens nos Estados Unidos.
    • us.gcr.io hospeda as imagens nos Estados Unidos, em um bucket de armazenamento separado das imagens hospedadas por gcr.io.
    • eu.gcr.io hospeda as imagens em estados-membros da União Europeia.
    • asia.gcr.io hospeda as imagens na Ásia.
  • GCR_PROJECT com o ID do projeto do Container Registry Google Cloud. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.

  • AR_PROJECT pelo ID do projeto Google Cloud em que você ativou a API Artifact Registry.

  • AR_REPOSITORY pelo nome do repositório do Artifact Registry.

A ferramenta pula todas as etapas de migração e copia imagens do local e do projeto especificados no Container Registry para o repositório do Artifact Registry.

Também é possível usar a flag --copy-only para reiniciar a cópia de imagens se houver um erro ou um tempo limite durante o processo.

A seguir