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.

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

  • 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 ou ignore o aplicativo, dependendo da preferência do usuário.
  • Redirecione 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 quer migrar. A ferramenta também vai solicitar que você ative a API Artifact Registry se pular essa 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 o qual 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 do 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.

O administrador também pode dar à conta de serviço do Artifact Registry as permissões necessárias por meio de 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 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

Talvez você também consiga 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 ter as permissões necessárias para fazer a transição para 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 suas imagens do Container Registry
  • Conferir e gerenciar a configuração do Container Registry aplicada 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 conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

repositórios padrão

Para ter as permissões necessárias para fazer a transição para 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
  • Conferir e gerenciar a configuração do Container Registry aplicada 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 conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Migre 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 projetos 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 aplica a política 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 disponibiliza temporariamente imagens ausentes copiando-as do Container Registry no momento da solicitação até que todas as imagens de 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 e hospedados no Artifact Registry.
  • Desativa a cópia durante a solicitação. O repositório gcr.io hospedado no Artifact Registry não depende mais do Container Registry.

Se você quiser copiar apenas as imagens extraídas do Container Registry nos últimos 30 a 90 dias, inclua a sinalização --recent-images=DAYS. Substitua DAYS pelo número de dias, entre 30 e 90, em que a ferramenta precisa 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, mais versões especificadas poderão ser copiadas.

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

Se você encontrar erros ou tempos limite, poderá executar o comando novamente 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 de 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:

  • O repositório do Artifact Registry será criado, se ele ainda não existir.
  • Sugere uma política do IAM para o repositório e aplica a política ou ignora o aplicativo, dependendo da preferência do usuário.
  • Copia as imagens na região especificada do Container Registry e o projeto para o repositório do Artifact Registry.

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

Se você encontrar erros ou tempos limite, poderá 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 de contêiner quando você o 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 projetos que você quer migrar para repositórios gcr.io hospedados no Artifact Registry.

A ferramenta ignora todas as etapas de migração e copia imagens nos projetos especificados do Container Registry para os 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 de 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 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