Migrar a repositorios estándar

Si usas Container Registry para gestionar tus imágenes de contenedor, en esta página se explica cómo configurar un repositorio de pkg.dev Artifact Registry y en qué se diferencia el uso de repositorios del uso de Container Registry.

Estas instrucciones están dirigidas principalmente a los administradores de repositorios. Para obtener información sobre cómo han cambiado la creación, el envío, la extracción y el despliegue de imágenes, consulta lo siguiente:

Antes de empezar

  1. Habilita la API de Artifact Registry desde la Google Cloud consola o con el siguiente comando:

    gcloud services enable artifactregistry.googleapis.com
    
  2. Instala gcloud CLI si aún no lo has hecho. Si ya tienes una instalación, ejecuta el siguiente comando para actualizar los componentes a las versiones más recientes:

    gcloud components update
    
  3. Consulta los precios de Artifact Registry antes de empezar la transición.

Roles obligatorios

Para obtener los permisos que necesitas para configurar repositorios de gcr.io, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el Google Cloud proyecto:

  • Para crear repositorios de Artifact Registry y conceder acceso a repositorios concretos, haz lo siguiente: Administrador de Artifact Registry (roles/artifactregistry.admin)
  • Para ver y gestionar la configuración de Container Registry que se ha aplicado a los contenedores de almacenamiento de Cloud Storage, sigue estos pasos: Administrador de Storage (roles/storage.admin)
  • Para conceder acceso al repositorio a nivel de proyecto, sigue estos pasos: Administrador de gestión de identidades y accesos de proyectos (roles/resourcemanager.projectIamAdmin) o un rol que incluya permisos equivalentes, como Administrador de carpetas (roles/resourcemanager.folderAdmin) o Administrador de organizaciones (roles/resourcemanager.organizationAdmin)

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.

Información general

Los repositorios pkg.dev son repositorios de Artifact Registry normales que admiten todas las funciones.

Para simplificar las cosas, en las instrucciones de esta página se da por hecho que tanto Container Registry como Artifact Registry están en el mismo proyecto Google Cloud . Puedes seguir usando ambos servicios mientras te pasas a Artifact Registry para poder completar los pasos de configuración y actualizar tu automatización de forma gradual. Si es necesario, puedes configurar Artifact Registry en otro proyecto y seguir los mismos pasos generales.

Artifact Registry también ofrece repositorios gcr.io. Estos repositorios pueden redirigir el tráfico de gcr.io desde tus registros a los repositorios de Artifact Registry correspondientes. Ofrecen cierta compatibilidad con versiones anteriores de Container Registry, pero también tienen algunas limitaciones. Sin embargo, si tienes muchas configuraciones de herramientas, secuencias de comandos o código con referencias a gcr.io, es posible que necesites un enfoque más táctico para cambiar a Artifact Registry. Consulta la documentación de transición de los repositorios compatibles con el dominio gcr.io para tomar la decisión adecuada.

Pasos de la transición

En esta guía se explica cómo completar los siguientes pasos:

  1. Crea un repositorio de Docker para tus contenedores. Debes crear un repositorio para poder enviar imágenes a él.
  2. Concede permisos al repositorio.
  3. Configura la autenticación para poder conectarte a tu nuevo repositorio.
  4. Si es necesario, copia las imágenes de Container Registry que quieras usar en tu nuevo repositorio.
  5. Prueba a enviar y extraer tus contenedores.
  6. Prueba a desplegar tus imágenes en un entorno de ejecución.
  7. Configura funciones adicionales.
  8. Elimina las imágenes de Container Registry cuando se haya completado la transición.

Crear repositorios

Container Registry crea automáticamente un segmento de almacenamiento en una multirregión si no has enviado ninguna imagen a esa ubicación antes.

En Artifact Registry, debes crear un repositorio antes de subir imágenes. Cuando creas un repositorio, debes especificar lo siguiente:

  • El formato del repositorio. Artifact Registry almacena contenedores en repositorios de Docker.
  • Una ubicación regional o multirregional para el repositorio.

    Cuando elijas una ubicación para tus repositorios de Artifact Registry, ten en cuenta la proximidad de los repositorios a tu otra infraestructura y a tus usuarios. Si tiene previsto copiar imágenes de Container Registry a Artifact Registry, las diferencias de ubicación pueden influir en el coste de la copia.

  • Una clave de Cloud Key Management Service, si usas claves de cifrado gestionadas por el cliente (CMEK) para el cifrado.

    En Container Registry, configura el segmento de almacenamiento de Container Registry para que use CMEK. En Artifact Registry, puede configurar los repositorios para que usen CMEK cuando los cree. Para obtener más información sobre cómo usar CMEK con Artifact Registry, consulta Habilitar claves de cifrado gestionadas por el cliente.

Container Registry aloja contenedores en el dominio gcr.io. Artifact Registry aloja contenedores en el dominio pkg.dev.

Para obtener información sobre cómo crear repositorios, incluidos los que usan CMEK para el cifrado, consulta Crear repositorios.

Conceder permisos

Container Registry usa roles de Cloud Storage para controlar el acceso. Artifact Registry tiene sus propios roles de gestión de identidades y accesos, que separan los roles de lectura, escritura y administración de repositorios de forma más clara que Container Registry.

Para asignar rápidamente los permisos concedidos en los contenedores de almacenamiento a los roles de Artifact Registry sugeridos, usa la herramienta de asignación de roles.

También puede ver una lista de las entidades que tienen acceso a los contenedores de almacenamiento mediante la Google Cloud consola.

  1. En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.

    Ir a Contenedores

  2. Haga clic en el segmento de almacenamiento del host del registro que quiera ver. En los nombres de los segmentos, PROJECT-ID es elGoogle Cloud ID de proyecto.

    • gcr.io: artifacts.PROJECT-ID.appspot.com
    • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
    • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
    • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com
  3. Haz clic en la pestaña Permisos.

  4. En la pestaña Permisos, haz clic en la subpestaña Ver por rol.

  5. Despliega un rol para ver las entidades que lo tienen.

La lista incluye los roles de gestión de identidades y accesos concedidos directamente en el segmento y los roles heredados del proyecto principal. En función del rol, puedes elegir el rol de Artifact Registry más adecuado para conceder.

Cloud Storage y roles básicos

Concede acceso a los repositorios de Artifact Registry a los usuarios y las cuentas de servicio que actualmente tienen acceso a Container Registry. En el caso de los roles de Cloud Storage heredados del proyecto principal, debes verificar que la entidad de seguridad use Container Registry. Es posible que algunos principales solo accedan a otros segmentos de Cloud Storage que no estén relacionados con Container Registry.

Los roles básicos Propietario, Editor y Lector que existían antes de IAM tienen acceso limitado a los segmentos de almacenamiento. No proporcionan intrínsecamente todo el acceso a los recursos de Cloud Storage que implican sus nombres y ofrecen permisos adicionales para otros servicios. Google Cloud Comprueba qué usuarios y cuentas de servicio necesitan acceso a Artifact Registry y usa la tabla de asignación de roles para conceder los roles adecuados si el acceso a Artifact Registry es apropiado.

En la siguiente tabla se asignan los roles de Artifact Registry en función de los permisos concedidos por los roles predefinidos de Cloud Storage para acceder a Container Registry. Los roles de Artifact Registry proporcionan una separación adicional de los permisos que no está disponible en los roles predefinidos de Cloud Storage.

Acceso necesario Rol actual Rol de Artifact Registry Dónde conceder el rol
Extraer solo imágenes (solo lectura) Lector de objetos de Storage
(roles/storage.objectViewer)
Lector de Artifact Registry
(roles/artifactregistry.reader)
Repositorio o Google Cloud proyecto de Artifact Registry
Insertar y extraer imágenes (lectura y escritura) Editor de segmentos heredados de Storage
(roles/storage.legacyBucketWriter)
Escritor de Artifact Registry
(roles/artifactregistry.writer)
Repositorio o Google Cloud proyecto de Artifact Registry
Insertar, extraer y eliminar imágenes Editor de segmentos heredados de Storage
(roles/storage.legacyBucketWriter)
Administrador del repositorio de Artifact Registry
(roles/artifactregistry.repoAdmin)
Repositorio o Google Cloud proyecto de Artifact Registry
Crear, gestionar y eliminar repositorios Administrador de almacenamiento
(roles/storage.admin)
Administrador de Artifact Registry
(roles/artifactregistry.admin)
Google Cloud proyecto
Roles de agente de servicio heredados del proyecto

Las cuentas de servicio predeterminadas de los Google Cloud servicios tienen sus propios roles concedidos a nivel de proyecto. Por ejemplo, el agente de servicio de Cloud Run tiene el rol Agente de servicio de Cloud Run.

En la mayoría de los casos, estos roles de agente de servicio contienen permisos predeterminados equivalentes para Container Registry y Artifact Registry, por lo que no es necesario que hagas ningún cambio adicional si ejecutas Artifact Registry en el mismo proyecto que tu servicio de Container Registry.

Consulta la referencia de roles de agente de servicio para obtener más información sobre los permisos de los roles de agente de servicio.

Roles personalizados

Usa la tabla de asignación de roles para decidir qué rol asignar a los usuarios o las cuentas de servicio en función del nivel de acceso que necesiten.

Para obtener instrucciones sobre cómo asignar roles de Artifact Registry, consulta Configurar roles y permisos.

Autenticarse en el repositorio

Artifact Registry admite los mismos métodos de autenticación que Container Registry.

Si usas el asistente de credenciales de Docker:

  • Debes usar la versión 2.0 o una posterior para interactuar con los repositorios de Artifact Registry. La versión independiente está disponible en GitHub.
  • Debes configurar el auxiliar de credenciales con las ubicaciones de Artifact Registry que quieras usar. De forma predeterminada, el asistente de credenciales solo configura el acceso a los hosts de Container Registry.

Para obtener información sobre cómo configurar la autenticación, consulta Configurar la autenticación para Docker.

Copiar contenedores de Container Registry

Si hay contenedores en Container Registry que quieres seguir usando en Artifact Registry, tienes varias opciones para copiarlos. Para obtener instrucciones detalladas, consulta el artículo Copiar imágenes de Container Registry.

Insertar y extraer imágenes

Los comandos de Docker que usas para etiquetar, enviar y extraer imágenes en Artifact Registry son similares a los que usas en Container Registry. Hay dos diferencias principales:

  • El nombre de host de los repositorios de Docker de Artifact Registry incluye un prefijo de ubicación seguido de -docker.pkg.dev. Por ejemplo, australia-southeast1-docker.pkg.dev, europe-north1-docker.pkg.dev y europe-docker.pkg.dev.
  • Como Artifact Registry admite varios repositorios de Docker en un mismo proyecto, debe especificar el nombre del repositorio en los comandos.

Por ejemplo, en Container Registry, este comando envía la imagen my-image al registro eu.gcr.io del proyecto my-project.

docker push eu.gcr.io/my-project/my-image

En Artifact Registry, este comando envía la imagen my-image al repositorio regional europe-north1-docker.pkg.dev del repositorio my-repo y del proyecto my-project.

docker push europe-north1-docker.pkg.dev/my-project/my-repo/my-image

Para obtener información sobre cómo enviar y extraer imágenes en Artifact Registry, consulta el artículo Enviar y extraer imágenes.

Desplegar imágenes

Las cuentas de servicio de las integraciones comunes Google Cloud se configuran con permisos predeterminados para los repositorios del mismo proyecto.

La creación de imágenes y su envío a un repositorio con Cloud Build suele funcionar de la misma forma que con Container Registry. La diferencia principal de Artifact Registry es que debe existir un repositorio de destino antes de enviar imágenes a él, incluida la primera imagen que envíes.

Asegúrate de crear los repositorios que necesites antes de ejecutar comandos que transfieran imágenes, incluidos el comando de Docker docker push y el comando de Cloud Build gcloud builds submit.

Los compiladores de Cloud Build siguen alojados en gcr.io. Para obtener más información, consulta Integración con Cloud Build.

Otras funciones

En esta sección se describe la configuración de otras funciones que puede haber configurado en Container Registry.

Artifact Analysis

Artifact Analysis es compatible con Container Registry y Artifact Registry. La documentación de Artifact Analysis incluye ambos productos.

  • Ambos productos usan las mismas APIs de análisis de artefactos. Si habilitas las APIs de Artifact Analysis en Container Registry o Artifact Registry, las APIs se activarán en ambos productos.
  • Ambos productos usan los mismos temas de Pub/Sub para las notificaciones de análisis de artefactos.
  • Puedes seguir usando los comandos de imágenes de contenedor de gcloud para enumerar las notas y las incidencias asociadas a las rutas de imágenes de gcr.io.
Container Registry Artifact Registry
Busca vulnerabilidades en paquetes de SO y de lenguajes con el análisis bajo demanda en imágenes con un SO compatible. El análisis automático solo devuelve información sobre vulnerabilidades del SO. Más información sobre los tipos de análisis
Análisis bajo demanda
Búsqueda automática
  • El comando de la CLI de Google Cloud gcloud container images incluye marcas para ver los resultados del análisis, incluidas las vulnerabilidades y otros metadatos.
  • Los análisis solo devuelven información sobre las vulnerabilidades del SO de las imágenes de Container Registry con sistemas operativos compatibles.
Analiza las vulnerabilidades de paquetes de SO y de lenguaje con análisis bajo demanda y automático. Más información sobre los tipos de análisis
Análisis bajo demanda
Búsqueda automática
  • El comando gcloud artifacts docker images de la CLI de Google Cloud incluye marcas para ver los resultados del análisis, incluidas las vulnerabilidades y otros metadatos.
  • Los análisis devuelven información sobre las vulnerabilidades del SO de las imágenes de Artifact Registry con sistemas operativos compatibles e información sobre las vulnerabilidades de los paquetes de idiomas de los sistemas operativos compatibles y no compatibles.

Notificaciones de Pub/Sub

Artifact Registry publica los cambios en el mismo tema gcr que Container Registry. No es necesario realizar ninguna configuración adicional si ya utiliza Pub/Sub con Container Registry en el mismo proyecto que Artifact Registry.

Si configuras Artifact Registry en un proyecto independiente, es posible que el tema gcr no exista. Para obtener instrucciones de configuración, consulta Configurar notificaciones de Pub/Sub.

Perímetros de servicio

Con Controles de Servicio de VPC, puedes configurar perímetros de seguridad alrededor de los recursos de los servicios gestionados por Google y controlar el movimiento de datos a través del límite del perímetro.

Consulta las instrucciones en Proteger repositorios en un perímetro de servicio.

Limpiar imágenes de Container Registry

Cuando quieras dejar de usar Container Registry, elimina las imágenes restantes eliminando los segmentos de almacenamiento de Container Registry.

Para eliminar cada segmento de almacenamiento de Container Registry, haz lo siguiente:

Consola

  1. Ve a la página de Cloud Storage en la Google Cloud consola.
  2. Selecciona el segmento de almacenamiento que quieras eliminar. En los nombres de los segmentos, PROJECT-ID es tu Google Cloud ID de proyecto.

    • gcr.io: artifacts.PROJECT-ID.appspot.com
    • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
    • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
    • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com
  3. Haz clic en Eliminar. Aparecerá un cuadro de diálogo de confirmación.

  4. Para confirmar la eliminación, introduce el nombre del contenedor y haz clic en Eliminar.

gcloud

Si quieres eliminar en bloque cien mil imágenes o más de un mismo contenedor, no utilices la CLI de gcloud, ya que el proceso de eliminación tarda mucho en completarse. Usa la Google Cloud consola para realizar la operación en su lugar. Para obtener más información, consulta cómo eliminar objetos de Cloud Storage en bloque.

Para eliminar un contenedor, usa el comando gcloud storage rm con la marca --recursive.

gcloud storage rm gs://BUCKET-NAME --recursive

Sustituye BUCKET-NAME por el nombre del bucket de almacenamiento de Container Registry. En los nombres de los segmentos, PROJECT-ID es elGoogle Cloud ID de proyecto.

  • gcr.io: artifacts.PROJECT-ID.appspot.com
  • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
  • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
  • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com

La respuesta tiene este aspecto:

Removing gs://artifacts.my-project.appspot.com/...

Si hay otros Google Cloud servicios en el mismo Google Cloud proyecto, deja habilitada la API de Container Registry. Si intentas inhabilitar la API Container Registry. Container Registry muestra una advertencia si hay otros servicios con una dependencia configurada habilitados en el proyecto. Si inhabilitas la API Container Registry, se inhabilitarán automáticamente todos los servicios del mismo proyecto que tengan una dependencia configurada, aunque no estés usando Container Registry con esos servicios.

Siguientes pasos