Migrar automáticamente de Container Registry a Artifact Registry

Usa la herramienta de migración automática para hacer la transición de Container Registry a los repositorios de gcr.io alojados en Artifact Registry o a los repositorios estándar de Artifact Registry.

La herramienta de migración automática puede realizar las siguientes acciones según la ruta de transición que elijas:

  • Crea repositorios de gcr.io o estándar en Artifact Registry para cada uno de los proyectos gcr.io de la lista en la región correspondiente.
  • Sugiere una política de IAM para cada repositorio y aplícala, o bien omite la aplicación según la preferencia del usuario.
  • Redireccionar todo el tráfico de los extremos de gcr.io a Artifact Registry
  • Copia todas las imágenes de contenedor almacenadas en Container Registry en tus repositorios gcr.io o estándar de Artifact Registry, incluso si ya habilitaste el redireccionamiento.

Antes de comenzar

  1. Instala Google Cloud CLI.
  2. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  3. Elige una opción de transición.
    • Si estás realizando la transición a los repositorios de gcr.io alojados en Artifact Registry, habilita la API de Artifact Registry en los proyectos de Container Registry que deseas migrar. La herramienta también te pedirá que habilites la API de Artifact Registry si omites este paso.

      Habilita la API de Artifact Registry.

      Habilita la API

    • Si realizas la transición a los repositorios estándar de Artifact Registry, habilita la API de Artifact Registry en el proyecto al que deseas migrar las imágenes de contenedor de Container Registry. Puedes usar el mismo proyecto en el que está habilitado Container Registry o uno diferente.

      Habilita la API de Artifact Registry.

      Habilita la API

Funciones obligatorias

Las siguientes funciones son obligatorias para todas las opciones de transición que usan la herramienta de migración automática.

Roles requeridos por la cuenta de servicio de Artifact Registry:

Para asegurarte de que la cuenta de servicio de Artifact Registry tenga los permisos necesarios para copiar imágenes de Container Registry a Artifact Registry, pídele a tu administrador que otorgue a la cuenta de servicio de Artifact Registry el rol de IAM de visualizador de objetos de Storage (roles/storage.objectViewer) en el proyecto de Container Registry. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

Es posible que el administrador también pueda otorgarle a la cuenta de servicio de Artifact Registry los permisos necesarios a través de roles personalizados o, también, otros roles predefinidos.

Roles necesarios para generar recomendaciones de IAM:

Si deseas obtener los permisos que necesitas para analizar una política de permisos, pídele a tu administrador que te otorgue los siguientes roles de IAM en los proyectos de Container Registry que deseas migrar:

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

Estos roles predefinidos contienen los permisos necesarios para analizar una política de permisos. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para analizar una política de permiso:

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • Para analizar políticas con roles de IAM personalizados, sigue estos pasos: iam.roles.get
  • Si quieres usar Google Cloud CLI para analizar políticas, sigue estos pasos: serviceusage.services.use

También puedes obtener estos permisos con roles personalizados o, también, otros roles predefinidos.

Las siguientes funciones se otorgan en diferentes recursos según tu opción de transición.

Repositorios de gcr.io

Si quieres obtener los permisos que necesitas para realizar la transición a los repositorios de gcr.io alojados en Artifact Registry, pídele a tu administrador que te otorgue los siguientes roles de IAM:

  • Crea repositorios de Artifact Registry y otorga acceso a repositorios individuales: Administrador de Artifact Registry (roles/artifactregistry.admin) en el proyecto de Google Cloud que contiene tus imágenes de Container Registry
  • Visualiza y administra la configuración existente de Container Registry aplicada a los buckets de almacenamiento de Cloud Storage: Administrador de Storage (roles/storage.admin) en el proyecto de Google Cloud que contiene tus imágenes de Container Registry

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

Es posible que también puedas obtener los permisos necesarios a través de funciones personalizadas o, también, otras funciones predefinidas.

repositorios estándar

Si deseas obtener los permisos que necesitas para realizar la transición a los repositorios estándar de Artifact Registry, pídele a tu administrador que te otorgue los siguientes roles de IAM:

  • Crea repositorios de Artifact Registry y otorga acceso a repositorios individuales: Administrador de Artifact Registry (roles/artifactregistry.admin) en el proyecto de Google Cloud en el que está habilitada la API de Artifact Registry
  • Visualiza y administra la configuración existente de Container Registry aplicada a los buckets de almacenamiento de Cloud Storage: Administrador de Storage (roles/storage.admin) en el proyecto de Google Cloud que contiene tus imágenes de Container Registry

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

Es posible que también puedas obtener los permisos necesarios a través de funciones personalizadas o, también, otras funciones predefinidas.

Migra a los repositorios de gcr.io alojados en Artifact Registry

Puedes migrar uno o varios proyectos de Google Cloud al mismo tiempo mediante el comando gcloud artifacts docker upgrade migrate.

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

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

Donde PROJECTS es el ID del proyecto de un solo proyecto que deseas migrar a los repositorios de gcr.io alojados en Artifact Registry, o a una lista separada por comas de los ID del proyecto que deseas migrar a los repositorios de 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 enumerados en la región correspondiente.
  • Sugiere una política de IAM para cada repositorio y aplica la política, o bien omite la aplicación según la preferencia del usuario.
  • Redirecciona todo el tráfico del extremo gcr.io a Artifact Registry. Artifact Registry entrega de forma temporal las imágenes faltantes copiándolas desde Container Registry en el momento de la solicitud hasta que todas las imágenes de contenedor se copien en Artifact Registry.
  • Copia todas las imágenes de contenedor almacenadas en tus buckets de gcr.io en los repositorios de gcr.io recién creados, alojados en Artifact Registry.
  • Inhabilita la copia en el momento de la solicitud. El repositorio gcr.io alojado en Artifact Registry ya no depende de Container Registry.

Si solo deseas copiar imágenes extraídas de Container Registry en los últimos 30 a 150 días, puedes incluir la marca --recent-images=DAYS. Reemplaza DAYS por la cantidad de días, entre 30 y 150, en los que la herramienta debe verificar las extracciones dentro.

Si deseas copiar una cantidad específica de versiones de cada imagen que se subieron recientemente, puedes incluir la marca --last-uploaded-versions=VERSIONS. Reemplaza VERSIONS por la cantidad de versiones que deseas copiar para cada imagen. Si se suben imágenes nuevas durante el copiado, es posible que se copie una cantidad mayor de versiones especificadas.

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

Si encuentras errores o se agota el tiempo de espera, puedes volver a ejecutar el comando de manera segura y se omitirán los pasos completados.

Migra a repositorios estándar de Artifact Registry

  1. Para migrar tu proyecto de gcr.io a un repositorio de Artifact Registry, ejecuta el siguiente comando.

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

    Reemplaza lo siguiente:

    • GCR_HOSTNAME por el nombre de host de Container Registry. El nombre de host depende de la ubicación en la que se almacenan las imágenes de contenedor:

      • gcr.io aloja las imágenes en los Estados Unidos.
      • us.gcr.io aloja las imágenes en los Estados Unidos, en un bucket de almacenamiento independiente de las imágenes alojadas por gcr.io.
      • eu.gcr.io aloja las imágenes dentro de los Estados miembros de la Unión Europea.
      • asia.gcr.io aloja las imágenes en Asia.
    • GCR_PROJECT por el ID del proyecto de Google Cloud para Container Registry. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con alcance de dominio.

    • AR_PROJECT por el ID del proyecto de Google Cloud en el que habilitaste la API de Artifact Registry.

    • AR_REPOSITORY por el nombre de tu repositorio de Artifact Registry.

La herramienta de migración completa los siguientes pasos:

  • Crea el repositorio de Artifact Registry si el repositorio aún no existe.
  • Sugiere una política de IAM para el repositorio y la aplica, o bien omite la aplicación según la preferencia del usuario.
  • Copia las imágenes en la región y el proyecto de Container Registry especificados en tu repositorio de Artifact Registry.

Si solo deseas copiar imágenes extraídas de Container Registry en los últimos 30 a 150 días, puedes incluir la marca --recent-images=DAYS. Reemplaza DAYS por la cantidad de días, entre 30 y 150, en los que la herramienta debe verificar las extracciones dentro.

Si encuentras errores o se agota el tiempo de espera, puedes volver a ejecutar el comando de manera segura y se omitirán los pasos completados.

Copiar imágenes

La herramienta de migración copia de forma automática las imágenes de contenedor cuando la ejecutas, pero, si quieres omitir todos los demás pasos de la migración automática y usar la herramienta para copiar imágenes a Artifact Registry, puedes pasar la marca --copy-only.

Para copiar imágenes de Container Registry a un repositorio gcr.io alojado en Artifact Registry, ejecuta el siguiente comando:

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

Donde PROJECTS es el ID del proyecto de un solo proyecto que deseas migrar a los repositorios de gcr.io alojados en Artifact Registry, o a una lista separada por comas de los ID del proyecto que deseas migrar a los repositorios de gcr.io alojados en Artifact Registry.

La herramienta omite todos los pasos de migración y copia las imágenes de los proyectos especificados de Container Registry en los repositorios de gcr.io alojados en Artifact Registry.

Para copiar imágenes de Container Registry a un repositorio estándar de Artifact Registry, ejecuta el siguiente comando:

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

Reemplaza lo siguiente:

  • GCR_HOSTNAME por el nombre de host de Container Registry. El nombre de host depende de la ubicación en la que se almacenan las imágenes de contenedor:

    • gcr.io aloja las imágenes en los Estados Unidos.
    • us.gcr.io aloja las imágenes en los Estados Unidos, en un bucket de almacenamiento independiente de las imágenes alojadas por gcr.io.
    • eu.gcr.io aloja las imágenes dentro de los Estados miembros de la Unión Europea.
    • asia.gcr.io aloja las imágenes en Asia.
  • GCR_PROJECT por el ID del proyecto de Google Cloud para Container Registry. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con alcance de dominio.

  • AR_PROJECT por el ID del proyecto de Google Cloud en el que habilitaste la API de Artifact Registry.

  • AR_REPOSITORY por el nombre de tu repositorio de Artifact Registry.

La herramienta omite todos los pasos de migración y copia las imágenes de la ubicación y el proyecto especificados en Container Registry en tu repositorio de Artifact Registry.

También puedes usar la marca --copy-only para reiniciar la copia de imágenes si tienes un error o un tiempo de espera durante el proceso.

¿Qué sigue?