Configura repositorios con compatibilidad con el dominio gcr.io

En este documento, se explica cómo configurar manualmente repositorios de gcr.io en Artifact Registry.

Recomendamos usar nuestra herramienta de migración automática para lo siguiente: transición a gcr.io repositorios en Artifact Registry.

Si deseas crear gcr.io repositorios en Artifact Registry con claves de encriptación administradas por el cliente (CMEK), completa los pasos que se indican en Antes de comenzar y, luego, sigue las instrucciones en Creación manual del repositorio.

Antes de comenzar

  1. Instala Google Cloud CLI si aún no lo has hecho. esté instalado. En el caso de una instalación existente, ejecuta el siguiente comando para actualizar componentes a las versiones más recientes:

    gcloud components update
    
  2. Habilita las APIs de Artifact Registry y Resource Manager. gcloud CLI usa la API de Resource Manager para buscar uno de los permisos necesarios.

    Ejecuta el siguiente comando:

    gcloud services enable \
        cloudresourcemanager.googleapis.com \
        artifactregistry.googleapis.com
    
  3. Obtén información sobre los precios de Artifact Registry antes cuando comiences la transición.

Roles obligatorios

A fin de obtener los permisos que necesita para configurar los repositorios de “gcr.io”, solicita a tu administrador que te otorgue el los siguientes roles de IAM en el proyecto de Google Cloud:

  • Para crear repositorios de Artifact Registry y otorgar acceso a repositorios individuales, sigue estos pasos: Administrador de Artifact Registry (roles/artifactregistry.admin)
  • Para ver y administrar la configuración existente de Container Registry aplicada a los buckets de almacenamiento de Cloud Storage, sigue estos pasos: Administrador de almacenamiento (roles/storage.admin)
  • Para crear un repositorio gcr.io la primera vez que envías una imagen a un nombre de host gcr.io, haz lo siguiente: Escritor de creación automática al momento del envío de Artifact Registry (roles/artifactregistry.createOnPushWriter)
  • Para otorgar acceso al repositorio a nivel de proyecto, haz lo siguiente: Administrador de IAM de 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)

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

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Limitaciones

Las siguientes limitaciones se aplican a los repositorios compatibles con el dominio gcr.io:

  • No puedes asignar un host de Container Registry a un Repositorio de Artifact Registry en un proyecto diferente
  • Cada nombre de host de Container Registry se asigna a solo un nombre de host Repositorio gcr.io de Artifact Registry en la misma multirregión.
  • Los nombres de los repositorios de gcr.io están predefinidos y no puedes modificarlos.

Si necesitas más control sobre la ubicación de tus repositorios, puedes transición a los repositorios estándar en Artifact Registry pkg.dev. Debido a que los repositorios estándar no son compatibles con gcr.io dominio, este enfoque de transición requiere más cambios en tu dominio existente la automatización y los flujos de trabajo. Consulta Elige una opción de transición para obtener más información sobre las diferencias entre funciones.

Crea repositorios

Crea repositorios de gcr.io para configurar el acceso de tus usuarios y copia las imágenes existentes de Container Registry a Artifact Registry antes de habilitarlas y el redireccionamiento.

Creación rápida de repositorios

Mediante estos pasos, se crean repositorios de gcr.io que están encriptados Claves de propiedad y administración de Google. Si quieres usar la encriptación administrada por el cliente claves (CMEK), debes crear repositorios manualmente.

Para crear repositorios de gcr.io, haz lo siguiente:

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

    Abrir la página Repositorios

    En la página, un banner muestra el mensaje. You have gcr.io repositories in Container Registry

    Abrir la página Configuración

  2. En el banner, haz clic en Crear repositorios de gcr.io.

    Se abrirá el panel Crear repositorios de gcr.io. La sección Copia imágenes enumera los nombres completos de cada repositorio que se usarán crear. Necesitarás estos nombres de repositorio si deseas copiar imágenes de Container Registry antes de activar el redireccionamiento.

  3. Haz clic en Crear.

Artifact Registry crea repositorios de gcr.io para todo Container Registry nombres de host:

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

Para ver la URL de Artifact Registry del repositorio, mantén la el puntero sobre el ícono de advertencia ( ) junto al nombre del repositorio.

Antes de redireccionar el tráfico a tus repositorios nuevos, debes asegurarte de que la automatización existente pueda acceder al repositorio. El siguiente paso es configurar permissions para otorgar acceso a los repositorios.

Creación manual del repositorio

Crea repositorios de gcr.io de forma manual si quieres usar claves de encriptación administradas por el cliente (CMEK) el contenido del repositorio o si hay una restricción de ubicación en tu organización de Google Cloud que bloquea la creación de nuevos recursos en ubicaciones específicas.

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 los permisos para usar la clave. 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 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 europa
      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 del repositorio.

      • Clave administrada por Google: Encripta el contenido del repositorio con un Clave de Google y 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. Haga 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 europa
      us.gcr.io us
    • DESCRIPTION es una descripción del repositorio. Qué no debes hacer incluyen datos sensibles, ya que las descripciones del repositorio no están encriptadas.

    • KMS-KEY es la ruta de acceso completa a la 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
    

Antes de redireccionar el tráfico a tus repositorios nuevos, debes asegurarte de que la automatización existente pueda acceder al repositorio. El siguiente paso es configurar permissions para otorgar acceso a los repositorios.

Otorga permisos a los repositorios

Container Registry usa roles de Cloud Storage para controlar el acceso. Artifact Registry tiene su propio IAM roles y estos roles separan los roles de administración de repositorios, operaciones de lectura, escritura y Container Registry.

Asignar rápidamente los permisos existentes otorgados en buckets de almacenamiento a los campos sugeridos Para los roles de Artifact Registry, usa la herramienta de asignación de roles.

Como alternativa, puedes ver una lista de principales con acceso al almacenamiento buckets 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 tu Google Cloud ID del 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 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 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 con acceso a repositorios de Artifact Registry. Para Cloud Storage roles heredados del proyecto superior, debes verificar que la principal que actualmente usa 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 buckets de almacenamiento. No proporcionan de forma intrínseca todo el acceso a Cloud Storage recursos 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 como ayuda otorgas 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 otorga 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 Storage
(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 crea una imagen se envía a un nombre de host gcr.io en un proyecto. Administrador de almacenamiento
(roles/storage.admin)
Administrador del 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 del agente de servicio heredados del proyecto

Las cuentas de servicio predeterminadas para los servicios de Google Cloud tienen sus propias roles otorgados 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, estos roles del agente de servicio contienen valores predeterminados los permisos para Container Registry y Artifact Registry no es necesario que hagas cambios adicionales si ejecutas Usa Artifact Registry en el mismo proyecto que tu Container Registry existente. servicio.

Consulta las referencia del rol del agente de servicio para obtener detalles sobre los permisos en roles de agente de servicio.

Funciones personalizadas

Usa la tabla de asignación de roles como ayuda para decidir rol que otorgar a los usuarios o cuentas de servicio según el nivel de acceso que necesitan.

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

Copia contenedores desde Container Registry

Recomendamos usar nuestra herramienta de migración automática para copiar tus imágenes de Container Registry a Artifact Registry.

Si quieres usar otras herramientas para copiar tus imágenes, consulta Copia imágenes desde Container Registry

Configurar otras funciones

En esta sección, se describe la configuración de otras funciones que podrías haber establecido. en Container Registry.

Artifact Analysis

Artifact Analysis admite tanto Container Registry y Artifact Registry. Ambos productos usan la misma APIs de Artifact Analysis para vulnerabilidades y metadatos de imágenes análisis y los mismos temas de Pub/Sub para las notificaciones de Artifact Analysis.

Sin embargo, las siguientes acciones solo ocurren cuando el redireccionamiento está habilitado:

  • Análisis automático de gcr.io repositorios en Artifact Registry.
  • Se incluye la actividad del repositorio de gcr.io en las notificaciones de Pub/Sub.

Puedes seguir usando gcloud container images para enumerar las notas y los casos asociados con las rutas de imágenes de gcr.io.

Container Registry Artifact Registry
Busca vulnerabilidades de SO y de paquetes de idioma con análisis a pedido. en imágenes con un SO compatible. El análisis automático solo devuelve resultados de información sobre vulnerabilidades. Más información sobre los tipos de en tiempo real.
Análisis a pedido
Búsqueda automática
  • El comando de Google Cloud CLI 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 vulnerabilidades del SO para imágenes en Container Registry con los sistemas operativos compatibles.
Analiza vulnerabilidades de paquetes de SO y de idioma con conjuntos de datos análisis automático. Más información sobre los tipos de en tiempo real.
Análisis a pedido
Búsqueda automática
  • El comando de Google Cloud CLI gcloud imágenes de Docker de artefactos incluye marcas para ver los resultados del análisis. incluidas las vulnerabilidades y otros metadatos.
  • Los análisis devuelven información sobre vulnerabilidades del SO para imágenes en Artifact Registry con los sistemas operativos compatibles y el paquete de idiomas información sobre vulnerabilidades para los sistemas operativos de la seguridad de la información.

Notificaciones de Pub/Sub

Artifact Registry publica cambios en el mismo tema gcr que Container Registry. No se requiere ninguna configuración adicional si ya usas Pub/Sub con Container Registry en el mismo proyecto que Artifact Registry. Sin embargo, Artifact Registry no publica mensajes para los repositorios de gcr.io hasta que habilites el redireccionamiento.

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

Habilitar el redireccionamiento del tráfico de gcr.io

Después de crear los repositorios de gcr.io y configuraste los permisos y la autenticación para tu en clientes de terceros, puedes habilitar el redireccionamiento del tráfico de gcr.io.

Si tienes un problema después de habilitar el redireccionamiento, puedes enrutar el tráfico de vuelta. a Container Registry y vuelve a activar el redireccionamiento cuando hayas solucionado el problema.

Verifica los permisos para habilitar el redireccionamiento

Para habilitar el redireccionamiento, debes tener los siguientes permisos en el nivel del proyecto:

  • artifactregistry.projectsettings.update: Permisos para actualizar Configuración del proyecto de Artifact Registry. Este permiso se encuentra en Rol de administrador de Artifact Registry (roles/artifactregistry.admin).
  • storage.buckets.update: Permisos para actualizar buckets de almacenamiento en las todo el proyecto. Este permiso tiene el rol Administrador de almacenamiento (roles/storage.admin).

Si no tienes estos permisos, pídele a un administrador que otorgar a nivel de proyecto.

Los siguientes comandos otorgan al administrador de Artifact Registry y administrador de almacenamiento en un proyecto.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='roles/artifactregistry.admin'

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='roles/storage.admin'

Reemplaza los siguientes valores:

  • PROJECT_ID es Google Cloud ID del proyecto:
  • PRINCIPAL es la dirección de correo electrónico de la cuenta que estás actualizando. Por ejemplo: user:my-user@example.com.

Valida la configuración del proyecto

Para validar la configuración de tu proyecto, ejecuta el siguiente comando:

gcloud artifacts settings enable-upgrade-redirection \
    --project=PROJECT_ID --dry-run

Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

Artifact Registry verifica los repositorios que se asignan a Container Registry y los nombres de host.

Aunque Artifact Registry puede crear los repositorios de gcr.io faltantes para cuando habilites el redireccionamiento, te recomendamos que primero los crees para que puede realizar las siguientes acciones antes de activar el redireccionamiento:

Cómo activar el redireccionamiento

Si deseas activar el redireccionamiento para el tráfico de gcr.io, sigue estos pasos:

Console

  1. Abre la página Configuración de la consola de Google Cloud.

    Abrir la página Configuración

  2. Haz clic en Enruta a Artifact Registry.

gcloud

Para habilitar el redireccionamiento, ejecuta el siguiente comando:

gcloud artifacts settings enable-upgrade-redirection \
    --project=PROJECT_ID

Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

Artifact Registry comenzará a activar el redireccionamiento.

Para verificar el estado actual del redireccionamiento, ejecuta el siguiente comando:

gcloud artifacts settings describe

Cuando se habilita el redireccionamiento, el resultado es el siguiente:

legacyRedirectionState: REDIRECTION_FROM_GCR_IO_ENABLED

Todo el tráfico hacia gcr.io, asia.gcr.io, eu.gcr.io y us.gcr.io es de redirigido, incluso si no creaste repositorios gcr.io para todos Nombres de host de Container Registry. Si envías una imagen a un nombre de host que no si tienes un repositorio de Artifact Registry correspondiente, Artifact Registry creará el repositorio si tienes un rol con artifactregistry.repositories.createOnPush permiso. Las funciones predefinidas de escritor de tipo Create-on-push (artifactregistry.createOnPushWriter) y el repositorio Create-on-push El administrador (artifactregistry.createOnPushRepoAdmin) tiene este permiso.

Con el redireccionamiento habilitado, puedes probar tu automatización y verificar que puedas envía y extrae imágenes con los repositorios de gcr.io nuevos.

Verifica el redireccionamiento

Verifica que las solicitudes de extracción y envío a los nombres de host de gcr.io funcionen correctamente.

  1. Envía una imagen de prueba a uno de tus repositorios de gcr.io mediante su gcr.io. ruta de acceso.

    1. Etiqueta la imagen con la ruta de acceso gcr.io. Por ejemplo, este comando Etiqueta la imagen local-image como us.gcr.io/my-project/test-image:

      docker tag local-image us.gcr.io/my-project/test-image
      
    2. Envía la imagen que etiquetaste. Por ejemplo, este comando envía imagen us.gcr.io/my-project/test-image:

      docker push us.gcr.io/my-project/test-image
      
  2. Muestra una lista de imágenes en el repositorio para verificar que se subieron. con éxito. Por ejemplo, para mostrar una lista de las imágenes en us.gcr.io/my-project, ejecuta lo siguiente: el comando:

    gcloud container images list --repository=us.gcr.io/my-project
    
  3. Extrae la imagen del repositorio mediante la ruta de acceso de Container Registry. Por ejemplo, este comando extrae la imagen us.gcr.io/my-project/test-image.

    docker pull us.gcr.io/my-project/test-image
    

Después de esta prueba inicial, verifica que tu automatización existente para compilar y implementar imágenes funciona como se espera, incluidas las siguientes opciones:

  • Los usuarios y las cuentas de servicio que usan Container Registry aún pueden enviar, extraer e implementar imágenes cuando el redireccionamiento esté habilitado.
  • La automatización solo envía imágenes a los repositorios existentes.
  • Si el análisis de vulnerabilidades de Artifact Analysis está habilitado, el análisis identifica imágenes con vulnerabilidades en los repositorios gcr.io.
  • Si usas Autorización Binaria, tus políticas existentes funcionan correctamente para las imágenes implementadas desde los repositorios de gcr.io.
  • Las suscripciones a Pub/Sub configuradas incluyen notificaciones de cambios en tus repositorios de gcr.io.

Limpia las imágenes de Container Registry

Cuando el redireccionamiento está habilitado, los comandos para borrar imágenes en las rutas de acceso gcr.io borrar imágenes en el repositorio gcr.io de Artifact Registry correspondiente. Los comandos Delete para borrar imágenes en las rutas de acceso gcr.io no borran las imágenes almacenadas en Hosts de Container Registry.

Para quitar de forma segura todas las imágenes de Container Registry, borra Cloud Storage buckets para cada nombre de host de Container Registry.

Para borrar cada bucket de almacenamiento de Container Registry, sigue estos pasos:

Console

  1. Ve a la página de Cloud Storage en la consola de Google Cloud.
  2. Selecciona el bucket de almacenamiento que quieras borrar. En los nombres de bucket, PROJECT-ID es tu cuenta de Google Cloud ID del 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 Borrar. Aparecerá un cuadro de diálogo de confirmación.

  4. Para confirmar la eliminación, ingresa el nombre del bucket y, luego, haz clic en Borrar.

gsutil

Si quieres borrar de forma masiva cien mil imágenes o más de un bucket, evitar el uso de gsutil, ya que el proceso de eliminación tarda mucho tiempo en completarse. En su lugar, usa la consola de Google Cloud para realizar la operación.

Para borrar un bucket, usa gsutil rm. con la marca -r.

gsutil rm -r gs://BUCKET-NAME

Reemplaza BUCKET-NAME por el almacenamiento de Container Registry. el nombre del bucket. En los nombres de bucket, PROJECT-ID es tu Google Cloud ID del 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 se ve como el siguiente ejemplo:

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

Si otros servicios de Google Cloud se ejecutan en la misma proyecto, deja habilitada la API de Container Registry. Si intentas Inhabilitar la API de Container Registry. Container Registry muestra una advertencia si otros servicios con un dependencias estén habilitadas en el proyecto. Inhabilita la API de Container Registry inhabilita automáticamente cualquier servicio en el mismo proyecto con una configuración aunque actualmente no uses Container Registry con esos de Google Cloud.

¿Qué sigue?