Migrar automáticamente de Container Registry a Artifact Registry

Usa la herramienta de migración automática para pasar de Container Registry a los repositorios de gcr.io alojados en Artifact Registry.

La migración a repositorios de Artifact Registry gcr.io se puede realizar en los endpoints de Container Registry que reciben tráfico sin que se produzca ningún tiempo de inactividad ni interrupción del servicio.

La herramienta de migración automática puede realizar las siguientes acciones:

  • Crea repositorios gcr.io en Artifact Registry para cada uno de los proyectos gcr.io que se indican en la lista en la región correspondiente.
  • Sugiere una política de gestión de identidades y accesos para cada repositorio y aplica la política o salta la aplicación en función de las preferencias del usuario.
  • Redirige todo el tráfico de los endpoints de gcr.io a Artifact Registry.
  • Copia todas las imágenes de contenedor almacenadas en Container Registry en tus repositorios de Artifact Registry, aunque ya hayas habilitado la redirección.gcr.io

Antes de empezar

  1. Install the Google Cloud CLI.

  2. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  3. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  4. Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API


    Si te saltas este paso, la herramienta de migración automática te pedirá que habilites la API de Artifact Registry.

Roles obligatorios

Para cambiar a repositorios gcr.io en Artifact Registry con la herramienta de migración automática, se necesitan los siguientes roles.

Roles de cuenta de servicio:

Puedes usar la cuenta de servicio de migración de gcr.io con la dirección de correo electrónico de artifact-registry-same-project-copier@system.gserviceaccount.com o la cuenta de servicio de Artifact Registry para cambiar a los repositorios de gcr.io en Artifact Registry.

Para asegurarte de que la cuenta de servicio que usas para la migración tiene los permisos necesarios para copiar imágenes de Container Registry a Artifact Registry, pide a tu administrador que conceda a la cuenta de servicio que usas para la migración el rol de gestión de identidades y accesos Lector de objetos de almacenamiento (roles/storage.objectViewer) en el proyecto, la carpeta o la organización de Container Registry.

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Es posible que tu administrador también pueda conceder a la cuenta de servicio que estés usando para la migración los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Roles de usuario:

Para obtener los permisos que necesitas para cambiar a los repositorios de gcr.io alojados en Artifact Registry, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de migración de Container Registry de Artifact Registry (roles/artifactregistry.containerRegistryMigrationAdmin) en la organización o el proyecto de Google Cloud que quieras migrar. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Migrar a repositorios gcr.io alojados en Artifact Registry

Puedes migrar un solo Google Cloud proyecto o varios Google Cloud proyectos a la vez con el comando gcloud artifacts docker upgrade migrate.

Para migrar a repositorios gcr.io, ejecuta el siguiente comando.

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Donde PROJECTS es el ID de un proyecto que quieras migrar a repositorios gcr.io alojados en Artifact Registry o una lista de IDs de proyectos separados por comas que quieras migrar a repositorios gcr.io alojados en Artifact Registry.

La herramienta de migración completa los siguientes pasos:

  • Crea repositorios de gcr.io en Artifact Registry para cada uno de los proyectos de gcr.io que hayas indicado en la región correspondiente.
  • Sugiere una política de gestión de identidades y accesos para cada repositorio y aplica la política o se salta la aplicación en función de las preferencias del usuario.
  • Redirige todo el tráfico del endpoint gcr.io a Artifact Registry. Artifact Registry sirve temporalmente las imágenes que faltan copiándolas de Container Registry en el momento de la solicitud hasta que se copien todas las imágenes de contenedor en Artifact Registry.
  • Copia todas las imágenes de contenedor almacenadas en tus segmentos de gcr.io en los repositorios de gcr.io recién creados alojados en Artifact Registry.
  • Inhabilita la copia en tiempo de solicitud. El repositorio gcr.io alojado en Artifact Registry ya no depende de Container Registry.

Si solo quieres copiar las imágenes extraídas de Container Registry en los últimos 30-180 días, puedes incluir la marca --recent-images=DAYS. Sustituye DAYS por el número de días (entre 30 y 180) en los que la herramienta debe buscar las solicitudes de extracción.

Si quieres copiar un número específico de versiones subidas recientemente de cada imagen, puedes incluir la marca --last-uploaded-versions=VERSIONS. Sustituye VERSIONS por el número de versiones que quieras copiar de cada imagen. Si se suben imágenes nuevas durante la copia, es posible que se copie un número de versiones superior al especificado.

Las marcas --recent-images y --last-uploaded-versions se excluyen mutuamente y no se pueden usar juntas.

Si se producen errores o se agota el tiempo de espera, puedes volver a ejecutar el comando sin problemas y se omitirán los pasos completados.

Migra más lentamente con lecturas canary

Puedes usar la marca --canary-reads para implementar solo un porcentaje de lecturas (y ninguna escritura) en Artifact Registry. Las imágenes que faltan y que se extraen de Artifact Registry se copian de Container Registry en el momento de la solicitud.

La migración con lecturas canary tiene dos ventajas:

  • La implementación en Artifact Registry se puede probar primero con un número mucho menor de solicitudes.
  • Las imágenes se siguen enviando a Container Registry durante la mayor parte del proceso, por lo que es más seguro revertir los cambios.

Te recomendamos que sigas este procedimiento:

  1. Para definir el porcentaje de lecturas canary en un 1 %, ejecuta el siguiente comando:

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=1
    
  2. Confirma que todo sigue funcionando correctamente.

  3. Para definir el porcentaje de lecturas canary en un 10 %, ejecuta el siguiente comando :

    gcloud artifacts docker upgrade migrate \
        --projects=PROJECTS \
        --canary-reads=10
    
  4. Confirma que todo sigue funcionando correctamente.

  5. Para definir las lecturas de lanzamiento de versiones de prueba en el 100 %, ejecuta el siguiente comando:

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

En este punto, todas las lecturas se envían a Artifact Registry y todas las escrituras se siguen enviando a Container Registry.

Para completar la migración, envía también escrituras a Artifact Registry ejecutando el comando artifacts docker upgrade migrate sin la marca --canary-reads:

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Restaurar lecturas canary

Para revertir las lecturas canary, ejecuta el siguiente comando:

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

La lectura de Canary también se inhabilita al ejecutar los comandos gcloud artifacts settings disable-upgrade-redirection o gcloud artifacts settings enable-upgrade-redirection.

Cuota de AnalyzeIamPolicy

Si vas a migrar un gran número de proyectos y te quedas sin cuota de AnalyzeIamPolicy, puedes usar la marca --no-use-analyze-iam. Usar la marca --no-use-analyze-iam para la migración es más lento que no usarla, pero evita enviar solicitudes a la cuota de AnalyzeIamPolicy.

Siguientes pasos