gcr.io alojado en Artifact Registry de forma predeterminada

Aprende a configurar repositorios de gcr.io en Artifact Registry y conoce las diferencias entre los permisos de Artifact Registry y Container Registry, y la configuración del bucket de almacenamiento.

Los pasos manuales que se describen en este documento se pueden completar con la herramienta de migración automática. Si quieres usar la herramienta de migración automática para hacer la transición de tus proyectos con uso activo de Container Registry a los repositorios estándar de Artifact Registry o a los repositorios gcr.io, consulta Automatiza la migración a Artifact Registry.

Baja de Container Registry

Los proyectos de Google Cloud que no usaron Container Registry antes del 15 de mayo de 2024 solo admitirán el hosting y la administración de imágenes en Artifact Registry. Este cambio afecta lo siguiente:

  • Proyectos recién creados.
  • Proyectos existentes en los que no enviaste una imagen a Container Registry.

Las organizaciones que no usaron Container Registry antes del 8 de enero de 2024 tendrán los nuevos repositorios de gcr.io alojados en Artifact Registry de forma predeterminada.

Cuando habilites la API de Artifact Registry en estos proyectos, Artifact Registry manejará automáticamente la creación de repositorios de gcr.io en Artifact Registry y redireccionará las solicitudes al dominio gcr.io al repositorio de Artifact Registry adecuado. A diferencia de la compatibilidad existente con el dominio gcr.io en proyectos que tienen uso activo de Container Registry, el redireccionamiento a Artifact Registry será automático.

Container Registry seguirá disponible en los proyectos en los que ocurra alguna de las siguientes acciones antes del 15 de mayo de 2024:

  • Habilitaste la API de Container Registry en el proyecto.
  • Envió una imagen a un host del registro en el proyecto.

A fin de prepararte para el próximo cambio, te recomendamos que hagas lo siguiente:

  • Sigue las instrucciones de este documento para configurar proyectos en los que no usas Container Registry a fin de que estén listos para el control automático de las solicitudes gcr.io cuando se apliquen los cambios.
  • Prueba la compatibilidad con el dominio gcr.io para verificar que tu automatización existente siga funcionando.

Los repositorios gcr.io alojados en Artifact Registry se crean en las mismas multirregiones que admite Container Registry. Si quieres almacenar tus imágenes en otras regiones, debes realizar la transición a repositorios estándar en el dominio pkg.dev.

Funciones obligatorias

A fin de obtener los permisos que necesitas para configurar los repositorios “gcr.io”, pídele a tu administrador que te otorgue los siguientes roles de IAM:

  • Para crear repositorios de Artifact Registry y otorgar acceso a repositorios individuales, haz lo siguiente: Administrador de Artifact Registry (roles/artifactregistry.admin) en el proyecto
  • Para ver y administrar la configuración existente de Container Registry aplicada a los buckets de almacenamiento de Cloud Storage, haz lo siguiente: Administrador de almacenamiento (roles/storage.admin) en el proyecto
  • Para otorgar acceso al repositorio a nivel de proyecto: Administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin) o un rol que incluya permisos equivalentes, como Administrador de carpetas (roles/resourcemanager.folderAdmin) o Administrador de la organización (roles/resourcemanager.organizationAdmin) en el proyecto, la carpeta o la organización
  • Para mostrar los servicios habilitados en una organización, usa Cloud Asset Viewer (roles/cloudasset.viewer) en la organización.

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

Es posible que también puedas obtener los permisos necesarios a través de los roles personalizados o de otros roles predefinidos.

Antes de comenzar

Puedes enumerar los proyectos en los que se almacena al menos una imagen en Container Registry. Luego, puedes enfocarte en configurar otros proyectos para alojar solicitudes gcr.io en Artifact Registry con las instrucciones de este documento.

Ejecuta el siguiente comando para encontrar cualquier uso de Container Registry en tu organización de Google Cloud.

  gcloud containers list-gcr-usage \
      --organization=ORGANIZATION

Reemplaza ORGANIZATION por el ID de tu organización de Google Cloud.

También puedes enumerar el uso de Container Registry para tu proyecto o carpeta. Si quieres obtener más información para encontrar el uso de Container Registry, consulta Verifica el uso de Container Registry.

Habilita la API

Habilita la API de Artifact Registry para que Artifact Registry controle automáticamente las solicitudes al dominio gcr.io cuando se aplique el hosting automático de gcr.io.

  1. Ejecuta el siguiente comando:

    gcloud services enable \
        artifactregistry.googleapis.com
    
  2. Si sueles colocar la API de Container Registry en un perímetro de servicio de Controles del servicio de VPC, asegúrate de colocar la API de Artifact Registry también en el perímetro. Consulta Protege repositorios en un perímetro de servicio para obtener instrucciones.

Otorga permisos a los repositorios

Container Registry usa roles de Cloud Storage para controlar el acceso. Artifact Registry tiene sus propias funciones de IAM, y estas separan las funciones de lectura, escritura y administración de repositorios con mayor claridad que Container Registry.

Para asignar con rapidez los permisos existentes que se otorgaron en los buckets de almacenamiento a las funciones sugeridas de Artifact Registry, usa la herramienta de asignación de funciones.

Como alternativa, puedes ver una lista de principales con acceso a buckets de almacenamiento mediante la consola de Google Cloud.

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

    Ir a Buckets

  2. Haz clic en el bucket de almacenamiento del host de registro que quieres ver. En los nombres de bucket, PROJECT-ID es el ID del proyecto de Google Cloud.

    • 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 pestaña secundaria Ver por rol.

  5. Expande un rol para ver las principales que tienen ese rol.

La lista incluye roles de IAM otorgados directamente en el bucket y roles heredados del proyecto superior. Según el rol, puedes elegir el rol de Artifact Registry más apropiado para otorgar.

Cloud Storage y roles básicos

Otorga acceso a los repositorios de Artifact Registry a los usuarios y las cuentas de servicio que actualmente acceden a Container Registry. Para las funciones de Cloud Storage heredadas del proyecto superior, debes verificar que la principal use actualmente Container Registry. Es posible que algunas principales solo accedan a otros buckets de Cloud Storage que no están relacionados con Container Registry.

Los roles básicos de propietario, editor y visualizador que existían antes de IAM tienen acceso limitado a los buckets de almacenamiento. No otorgan de forma intrínseca todo el acceso a los recursos de Cloud Storage que implican sus nombres y proporcionan permisos adicionales para otros servicios de Google Cloud. Verifica qué usuarios y cuentas de servicio requieren acceso a Artifact Registry y usa la tabla de asignación de funciones para ayudarte a otorgar los roles correctos si el acceso a Artifact Registry es adecuado.

En la siguiente tabla, se asignan los roles de Artifact Registry según los permisos que otorgan los roles predefinidos de Cloud Storage para el acceso a Container Registry.

Acceso obligatorio Rol actual Rol de Artifact Registry Dónde otorgar el rol
Extraer imágenes únicamente (solo lectura) Visualizador de objetos de Storage
(roles/storage.objectViewer)
Lector de Artifact Registry
(roles/artifactregistry.reader))
Repositorio de Artifact Registry o proyecto de Google Cloud
  • Envía y extrae imágenes (de lectura y escritura)
  • Borrar imágenes
Escritor de buckets heredados de almacenamiento
(roles/storage.legacyBucketWriter)
Administrador del repositorio de Artifact Registry
(roles/artifactregistry.repoAdmin))
Repositorio de Artifact Registry o proyecto de Google Cloud
Crea un repositorio gcr.io en Artifact Registry la primera vez que se envía una imagen al nombre de host gcr.io en un proyecto. Administrador de almacenamiento
(roles/storage.admin)
Administrador de repositorio Create-on-push de Artifact Registry
(roles/artifactregistry.createOnPushRepoAdmin)
Proyecto de Google Cloud
Crea, administra y borra repositorios Administrador de almacenamiento
(roles/storage.admin)
Administrador de Artifact Registry
(roles/artifactregistry.Admin)
Proyecto de Google Cloud
Roles de agente de servicio heredados del proyecto

Las cuentas de servicio predeterminadas para los servicios de Google Cloud tienen sus propias funciones otorgadas a nivel de proyecto. Por ejemplo, el agente de servicio para 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, y no es necesario que realices ningún cambio adicional si ejecutas Artifact Registry en el mismo proyecto que tu servicio de Container Registry existente.

Consulta la referencia de la función de agente de servicio para obtener detalles sobre los permisos en las funciones de agente de servicio.

Roles personalizados

Usa la tabla de asignación de funciones para decidir qué función otorgar a los usuarios o cuentas de servicio según el nivel de acceso que requieren.

Si necesitas instrucciones para otorgar roles de Artifact Registry, consulta Configura roles y permisos.

Configuración del bucket de almacenamiento

Cuando creas un repositorio en Artifact Registry, Artifact Registry no crea buckets de Cloud Storage correspondientes en tu proyecto. Si tienes automatización para Container Registry que interactúa de forma directa con buckets de almacenamiento, debes actualizarla para realizar los cambios correspondientes en el repositorio de Artifact Registry.

Por ejemplo, si otorgas permisos de Cloud Storage de manera programática en los buckets de almacenamiento de Container Registry, debes actualizar esa automatización para otorgar permisos de Artifact Registry en los repositorios de Artifact Registry que alojan imágenes para el dominio gcr.io.

En Artifact Registry, puedes configurar el método de encriptación para los datos almacenados en un repositorio en lugar de en un bucket de almacenamiento. El hosting automático de gcr.io en Artifact Registry crea repositorios de gcr.io que se encriptan con claves de encriptación administradas por Google. Si deseas usar claves de encriptación administradas por el cliente (CMEK), debes crear los repositorios de gcr.io por tu cuenta y especificar CMEK como el método de encriptación cuando las crees.

Sigue estos pasos para crear un repositorio gcr.io de forma manual:

  1. Si usas CMEK, crea la clave que usarás con este repositorio y otorga permisos para usarla. Consulta Habilita claves de encriptación administradas por el cliente.

  2. Agrega el repositorio.

    Console

    1. Abre la página Repositorios en la consola de Google Cloud.

      Abrir la página Repositorios

    2. Haz clic en Crear repositorio.

    3. Especifica el nombre del repositorio.

      Nombre de host de Container Registry Nombre del repositorio de Artifact Registry
      gcr.io gcr.io
      asia.gcr.io asia.gcr.io
      eu.gcr.io eu.gcr.io
      us.gcr.io us.gcr.io
    4. Especifica Docker como el formato de repositorio.

    5. En Tipo de ubicación, especifica la multirregión para el repositorio:

      Nombre de host de Container Registry Ubicación del repositorio de Artifact Registry
      gcr.io us
      asia.gcr.io asia
      eu.gcr.io europe
      us.gcr.io us
    6. Agrega una descripción para el repositorio. No incluyas datos sensibles, ya que las descripciones del repositorio no están encriptadas.

    7. En la sección Encriptación, elige el mecanismo de encriptación para el repositorio.

      • Clave administrada por Google: Encripta el contenido de un repositorio mediante una clave de encriptación administrada por Google.
      • Clave administrada por el cliente: Encripta el contenido de un repositorio mediante una clave que controlas a través de Cloud Key Management Service. Si deseas obtener instrucciones para la configuración de claves, consulta Configura CMEK para repositorios.
    8. Haz clic en Crear.

    gcloud

    Ejecuta el siguiente comando para crear un repositorio nuevo.

    gcloud artifacts repositories create REPOSITORY \
        --repository-format=docker \
        --location=LOCATION \
        --description=DESCRIPTION \
        --kms-key=KMS-KEY
    

    Reemplaza los siguientes valores:

    • REPOSITORY es el nombre del repositorio.

      Nombre de host de Container Registry Nombre del repositorio de Artifact Registry
      gcr.io gcr.io
      asia.gcr.io asia.gcr.io
      eu.gcr.io eu.gcr.io
      us.gcr.io us.gcr.io
    • LOCATION es la multirregión para el repositorio:

      Nombre de host de Container Registry Ubicación del repositorio de Artifact Registry
      gcr.io us
      asia.gcr.io asia
      eu.gcr.io europe
      us.gcr.io us
    • DESCRIPTION es una descripción del repositorio. No incluyas datos sensibles, ya que las descripciones del repositorio no están encriptadas.

    • KMS-KEY es la ruta completa a la clave de encriptación de Cloud KMS, si usas una clave de encriptación administrada por el cliente para encriptar el contenido del repositorio. La ruta tiene el siguiente formato:

      projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY

      Reemplaza los siguientes valores:

      • KMS-PROJECT es el proyecto en el que se almacena tu clave.
      • KMS-LOCATION es la ubicación de la clave.
      • KEY-RING es el nombre del llavero de claves.
      • KEY es el nombre de la clave.

    Para confirmar que el repositorio se creó, enumera tus repositorios con el siguiente comando:

    gcloud artifacts repositories list
    

¿Qué sigue?

Configura la compatibilidad con el dominio gcr.io en un proyecto de prueba para verificar que la automatización y la integración existentes en servicios como Cloud Build, Google Kubernetes Engine o Cloud Functions funcionen como se espera.