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.

A migração para repositórios do Artifact Registry gcr.io pode ser realizada em endpoints do Container Registry que recebem tráfego sem exigir tempo de inatividade ou interrupção do serviço.

A ferramenta de migração automática pode realizar as seguintes ações:

  • Crie repositórios gcr.io no Artifact Registry para cada um dos seus projetos gcr.io listados na região correspondente.
  • Sugerir uma política do IAM para cada repositório e aplicar a política ou pular a aplicação, 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 do Artifact Registry gcr.io, mesmo que você já tenha ativado o redirecionamento.

Antes de começar

  1. Install the Google Cloud CLI.

  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Enable the Artifact Registry API.

    Enable the API


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

Funções exigidas

As seguintes funções são necessárias para a transição para repositórios gcr.io no Artifact Registry usando a ferramenta de migração automática.

Papéis da conta de serviço:

Você pode usar a conta de serviço de migração do gcr.io com o endereço de e-mail artifact-registry-same-project-copier@system.gserviceaccount.com ou a conta de serviço do Artifact Registry para fazer a transição para repositórios do gcr.io no Artifact Registry.

Para garantir que a conta de serviço usada na migração 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 usada na migração o papel do IAM Leitor de objetos do Storage (roles/storage.objectViewer) no projeto, na pasta ou na organização 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 usada para a migração as permissões necessárias por meio de papéis personalizados ou outros papéis predefinidos.

Funções do usuário:

Para receber 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ê o papel do IAM de Administrador da migração do Container Registry para o Artifact Registry (roles/artifactregistry.containerRegistryMigrationAdmin) na organização ou no projeto Google Cloud 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 gcr.io hospedados no Artifact Registry

É possível migrar um único projeto Google Cloud ou vários projetos Google Cloud ao mesmo tempo usando o comandogcloud 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 ou pula a aplicação dependendo da preferência do usuário.
  • Redireciona todo o tráfego do endpoint gcr.io para o Artifact Registry. O Artifact Registry veicula temporariamente as 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 seus intervalos gcr.io para os repositórios gcr.io recém-criados hospedados no Artifact Registry.
  • Desativa a cópia no momento da 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 180 dias, inclua a flag --recent-images=DAYS. Substitua DAYS pelo número de dias, entre 30 e 180, em que a ferramenta deve verificar os pull requests.

Se você quiser copiar um número específico de versões enviadas recentemente de cada imagem, inclua a flag --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 do que o número de versões especificado poderá ser copiado.

As flags --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.

Migração mais lenta com leituras canário

É possível usar a flag --canary-reads para lançar apenas uma porcentagem de leituras, e nenhuma gravação, no Artifact Registry. As imagens ausentes extraídas do Artifact Registry são copiadas do Container Registry no momento da solicitação.

A migração com leituras canário tem duas vantagens:

  • A implantação no Artifact Registry pode ser testada primeiro em um número muito menor de solicitações.
  • As imagens ainda são enviadas para o Container Registry durante a maior parte do processo, então é mais seguro fazer o rollback.

Recomendamos o seguinte procedimento:

  1. Para definir a porcentagem de leituras canário como 1%, execute o seguinte comando:

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=1
    
  2. Confirme se tudo ainda está funcionando corretamente.

  3. Para definir a porcentagem de leituras canário como 10%, execute o seguinte comando :

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=10
    
  4. Confirme se tudo ainda está funcionando corretamente.

  5. Para definir leituras canário em 100%, execute o seguinte comando:

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=100
    

Nesse ponto, todas as leituras são enviadas ao Artifact Registry e todas as gravações ainda são enviadas ao Container Registry.

Para concluir a migração, envie gravações para o Artifact Registry também executando o comando artifacts docker upgrade migrate sem a flag --canary-reads:

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Reverter leituras canário

Para reverter leituras canário, execute o seguinte comando:

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS \
    --canary-reads=0

As leituras canário também são desativadas ao executar os comandos gcloud artifacts settings disable-upgrade-redirection ou gcloud artifacts settings enable-upgrade-redirection.

Cota do AnalyzeIamPolicy

Se você estiver migrando um grande número de projetos e ficar sem a cota AnalyzeIamPolicy, use a flag --no-use-analyze-iam. Usar a flag --no-use-analyze-iam para migração é mais lento do que sem ela, mas evita o envio de solicitações à cota "AnalyzeIamPolicy".

A seguir