Migrar automaticamente do Container Registry para o Artifact Registry

Use a ferramenta de migração automática para fazer a transição do Container Registry para repositórios gcr.io hospedados no Artifact Registry ou para repositórios padrão do Artifact Registry.

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

  • Crie repositórios gcr.io ou repositórios padrão no Artifact Registry para cada um dos projetos gcr.io listados na região correspondente.
  • Sugira uma política do IAM para cada repositório e aplique a política ou ignore o aplicativo, dependendo da preferência do usuário.
  • Redirecionar todo o tráfego dos endpoints gcr.io para o Artifact Registry.
  • Copie todas as imagens de contêiner armazenadas no Container Registry para os repositórios gcr.io ou repositórios padrão do Artifact Registry, mesmo que você já tenha ativado o redirecionamento.

Antes de começar

  1. Instale a CLI do Google Cloud.
  2. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  3. Escolha uma opção de transição.
    • Se você estiver fazendo a transição para repositórios gcr.io hospedados no Artifact Registry, ative a API Artifact Registry nos projetos do Container Registry que você quer migrar. A ferramenta também vai solicitar que você ative a API Artifact Registry se pular esta etapa.

      Ative a API Artifact Registry.

      Ative a API

    • Se você estiver fazendo a transição para repositórios padrão do Artifact Registry, ative a API Artifact Registry no projeto para onde quer migrar as imagens de contêiner do Container Registry. É possível usar o mesmo projeto em que o Container Registry está ativado ou um projeto diferente.

      Ative a API Artifact Registry.

      Ative a API

Funções exigidas

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

Papéis exigidos pela conta de serviço do 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 de IAM Leitor de objetos do Storage (roles/storage.objectViewer) no projeto do Container Registry. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

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

Papéis necessários para gerar recomendações do IAM:

Para receber as permissões necessárias para analisar uma política de permissão, peça ao administrador para conceder a você os seguintes papéis do IAM nos projetos do Container Registry que você quer migrar:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esses papéis predefinidos contêm as permissões necessárias para analisar uma política de permissão. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para analisar uma política de permissão:

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • Para analisar políticas com papéis personalizados do IAM: iam.roles.get
  • Para usar a Google Cloud CLI para analisar políticas: serviceusage.services.use

Também é possível receber essas permissões com papéis personalizados ou outros papéis predefinidos.

Os papéis a seguir são concedidos em diferentes recursos, dependendo da opção de transição.

Repositórios gcr.io

Para receber as permissões necessárias para fazer a transição para os repositórios gcr.io hospedados no Artifact Registry, peça ao administrador para conceder a você os seguintes papéis do IAM:

  • Crie repositórios do Artifact Registry e conceda acesso a repositórios individuais: Administrador do Artifact Registry (roles/artifactregistry.admin) no projeto do Google Cloud que contém as imagens do Container Registry
  • Veja e gerencie as configurações atuais do Container Registry aplicadas aos buckets de armazenamento do Cloud Storage: Administrador do Storage (roles/storage.admin) no projeto do Google Cloud que contém as imagens do Container Registry

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível receber as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

repositórios padrão

Para receber as permissões necessárias para fazer a transição para os repositórios padrão do Artifact Registry, peça ao administrador para conceder a você os seguintes papéis do IAM:

  • Crie repositórios do Artifact Registry e conceda acesso a repositórios individuais: Administrador do Artifact Registry (roles/artifactregistry.admin) no projeto do Google Cloud em que a API Artifact Registry está ativada
  • Veja e gerencie as configurações atuais do Container Registry aplicadas aos buckets de armazenamento do Cloud Storage: Administrador do Storage (roles/storage.admin) no projeto do Google Cloud que contém as imagens do Container Registry

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível receber as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Migrar para repositórios gcr.io hospedados no Artifact Registry

É possível migrar um ou vários projetos do Google Cloud ao mesmo tempo usando o comando gcloud artifacts docker upgrade migrate.

Para migrar para repositórios gcr.io, execute o seguinte comando.

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Em que PROJECTS é o ID do projeto de um único projeto que você quer migrar para repositórios gcr.io hospedados no Artifact Registry ou uma lista separada por vírgulas de IDs de projeto que você quer migrar para repositórios gcr.io hospedados no Artifact Registry.

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

  • Cria repositórios gcr.io no Artifact Registry para cada um dos projetos gcr.io listados na região correspondente.
  • Sugere uma política do IAM para cada repositório e a aplica ou ignora o aplicativo dependendo da preferência do usuário.
  • Redireciona todo o tráfego do endpoint gcr.io para o Artifact Registry. O Artifact Registry exibe temporariamente as imagens ausentes copiando-as do Container Registry no momento da solicitação, até que todas as imagens do contêiner sejam copiadas para o Artifact Registry.
  • Copia todas as imagens de contêiner armazenadas nos buckets gcr.io para os repositórios gcr.io recém-criados hospedados no Artifact Registry.
  • Desativa a cópia do horário da solicitação. O repositório gcr.io hospedado no Artifact Registry não depende mais do Container Registry.

Se você quiser copiar apenas imagens extraídas do Container Registry nos últimos 30 a 150 dias, inclua a sinalização --recent-images=DAYS. Substitua DAYS pelo número de dias, entre 30 e 150, em que a ferramenta vai verificar se há pulls.

Se você quiser copiar um número específico de versões enviadas recentemente de cada imagem, inclua a sinalização --last-uploaded-versions=VERSIONS. Substitua VERSIONS pelo número de versões que você quer copiar para cada imagem. Se novas imagens forem enviadas durante a cópia, é possível que mais do que o número de versões especificado seja copiado.

As sinalizações --recent-images e --last-uploaded-versions são mutuamente exclusivas e não podem ser usadas juntas.

Em caso de erros ou tempos limite, execute novamente o comando com segurança e as etapas concluídas serão ignoradas.

Migrar para repositórios padrão do Artifact Registry

  1. Para migrar seu projeto gcr.io para um repositório do Artifact Registry, execute o comando a seguir.

    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 estã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 pelo ID do projeto do Google Cloud do Container Registry. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.

    • AR_PROJECT pelo ID do projeto do 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, caso ele ainda não exista.
  • Sugere uma política do IAM para o repositório e aplica a política ou pula o aplicativo dependendo da preferência do usuário.
  • Copia imagens na região especificada do Container Registry e projeto para o repositório do Artifact Registry.

Se você quiser copiar apenas imagens extraídas do Container Registry nos últimos 30 a 150 dias, inclua a sinalização --recent-images=DAYS. Substitua DAYS pelo número de dias, entre 30 e 150, em que a ferramenta vai verificar se há pulls.

Em caso de erros ou tempos limite, execute novamente o comando com segurança e as etapas concluídas serão ignoradas.

Copiar imagens

A ferramenta de migração copia automaticamente as imagens de contêiner quando você a executa, mas 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 sinalização --copy-only.

Para copiar imagens do Container Registry para um repositório gcr.io hospedado no Artifact Registry, execute o seguinte comando:

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

Em que PROJECTS é o ID do projeto de um único projeto que você quer migrar para repositórios gcr.io hospedados no Artifact Registry ou uma lista separada por vírgulas de IDs de projeto que você quer migrar para repositórios gcr.io hospedados no Artifact Registry.

A ferramenta pula todas as etapas de migração e copia imagens nos projetos especificados do Container Registry para repositórios gcr.io hospedados no Artifact Registry.

Para copiar imagens do Container Registry para um repositório padrão do Artifact Registry, 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 estã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 pelo ID do projeto do Google Cloud do Container Registry. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.

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

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

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

Também é possível usar a sinalização --copy-only para reiniciar a cópia de imagens se você tiver um erro ou tempo limite durante o processo.

A seguir