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 descritos en este documento se pueden completar mediante la herramienta de migración automática. Si deseas usar la herramienta de migración automática para realizar la transición de tus proyectos con uso activo de Container Registry a los repositorios estándar de Artifact Registry o a los repositorios de gcr.io, consulta Automatiza la migración a Artifact Registry.

Baja de Container Registry

Los proyectos de Google Cloud que no hayan usado 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 creados recientemente.
  • 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 nuevos repositorios de gcr.io alojados en Artifact Registry de forma predeterminada.

Cuando habilites la API de Artifact Registry en estos proyectos, Artifact Registry controlará 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 correspondiente. A diferencia de la compatibilidad existente con el dominio gcr.io en los proyectos que usan Container Registry activo, el redireccionamiento a Artifact Registry será automático.

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

  • Habilitaste la API de Container Registry en el proyecto.
  • Envíaste una imagen a un host de registro del proyecto.

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

  • Sigue las instrucciones de este documento a fin de configurar proyectos en los que no uses Container Registry, de modo 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 de gcr.io alojados en Artifact Registry se crean en las mismas multirregiones que admite Container Registry. Si deseas almacenar tus imágenes en otras regiones, debes realizar la transición a los repositorios estándar en el dominio pkg.dev.

Funciones obligatorias

Si deseas obtener los permisos que necesitas para configurar los repositorios de “gcr.io”, solicita 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 Storage (roles/storage.admin) en el proyecto
  • Para otorgar acceso al repositorio a nivel del proyecto, haz lo siguiente: Administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin) o una función 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 enumerar los servicios habilitados en una organización, haz lo siguiente: Visualizador de Cloud Asset (roles/cloudasset.viewer) en la organización

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.

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 mediante las instrucciones de este documento.

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

  gcloud container images 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. Para obtener más información sobre cómo 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 entre en vigencia el hosting automático de gcr.io.

  1. Ejecuta el siguiente comando:

    gcloud services enable \
        artifactregistry.googleapis.com
    
  2. Si normalmente colocas 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, que separan las funciones de administración de repositorio, lectura y escritura con mayor claridad que Container Registry.

Para asignar con rapidez los permisos existentes de los buckets de almacenamiento a los roles sugeridos de Artifact Registry, usa la herramienta de asignación de roles.

Como alternativa, puedes ver una lista de principales con acceso a los buckets de almacenamiento con 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 lo tienen.

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

Cloud Storage y roles básicos

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

Las funciones básicas de propietario, editor y visualizador que existían antes de IAM tienen acceso limitado a los buckets de almacenamiento. No proporcionan 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 roles 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 requerido Rol actual Rol de Artifact Registry Dónde otorgar el rol
Solo imágenes de extracción (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 (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 a un nombre de host gcr.io en un proyecto. Administrador de almacenamiento
(roles/storage.admin)
Administrador del repositorio de Artifact Registry Create-on-push
(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 del 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 de agente de servicio de Cloud Run.

En la mayoría de los casos, estas funciones 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 existente de Container Registry.

Consulta la referencia de funciones del agente de servicio para obtener detalles sobre los permisos en las funciones del 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.

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

Configuración del bucket de almacenamiento

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

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

En Artifact Registry, configuras 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 encriptados con claves que posee y las que administra Google. Si deseas usar claves de encriptación administradas por el cliente (CMEK), debes crear los repositorios de gcr.io tú mismo y especificar CMEK como el método de encriptación cuando los crees.

Para crear un repositorio gcr.io de forma manual, sigue estos pasos:

  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.

    Consola

    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 del repositorio.

    5. En Tipo de ubicación, especifica la multirregión del 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 del repositorio con una clave de propiedad de Google y una 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 del 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 de acceso 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.

    Enumera tus repositorios con el siguiente comando para confirmar que se creó el repositorio:

    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 con servicios como Cloud Build, Google Kubernetes Engine o Cloud Functions funcionen como se espera.