Descripción general de los repositorios virtuales

En este documento, se proporciona una descripción general de los repositorios virtuales. Para obtener instrucciones sobre cómo crear un repositorio virtual, consulta Crea repositorios virtuales.

Las cuotas y los límites de Artifact Registry se aplican a los repositorios virtuales.

Cómo funcionan los repositorios virtuales

Los repositorios virtuales actúan como un único punto de acceso para descargar, instalar o implementar artefactos en el mismo formato desde uno o más repositorios ascendentes Un repositorio upstream puede ser un repositorio estándar o remoto de Artifact Registry en un repositorio de confianza.

Los otros modos de repositorio son los siguientes:

  • Estándar: Es el modo de repositorio predeterminado. Tú subes o publicas como paquetes privados directamente en los repositorios estándar. Aunque puedes descargar directamente desde repositorios estándar individuales, acceder a grupos de repositorios con un repositorio virtual simplifica la configuración de herramientas.
  • Remoto (solo repositorios de paquetes de lenguaje): Es una caché de extracción para artefactos en repositorios públicos, como Maven Central o PyPI. Actúa como un proxy para los repositorios públicos, de modo que tengas más control sobre tus dependencias externas.

Casos de uso y beneficios

Configuración del cliente más simple

Para las tareas que solo requieren acceso de lectura a los repositorios, solo debes configurar un solo repositorio de Artifact Registry para acceder a los artefactos almacenados en varios repositorios upstream.

Por ejemplo:

  • Un repositorio virtual para paquetes de Maven puede entregar contenido Java privado paquetes de un repositorio estándar de Artifact Registry y paquetes de Java desde un repositorio remoto que almacena en caché paquetes públicos de Maven Central.
  • Un repositorio virtual puede entregar paquetes privados de Python desde múltiples repositorios estándar upstream que son propiedad de diferentes equipos. Cada equipo tiene acceso de escritura a su repositorio upstream, pero descarga paquetes de otros equipos con el repositorio virtual.
Resolución de dependencias más segura

Puedes asignar una prioridad a los repositorios ascendentes para tener más control sobre qué repositorio elige Artifact Registry cuando se elimina un artefacto en más de un repositorio upstream.

Algunas herramientas, como la herramienta pip de Python, no proporcionan una forma de controlar el orden de búsqueda cuando se configura una combinación de repositorios privados y públicos en el cliente. Este tipo de configuración es vulnerable a un ataque de confusión de dependencias, en el que alguien sube una versión nueva de un paquete con código incorrecto a un repositorio público para engañar a los clientes y que elijan la versión incorrecta.

Puedes usar repositorios remotos y virtuales en conjunto para mitigar este riesgo:

  1. Crea un repositorio remoto como proxy para el repositorio público.
  2. Crea un repositorio estándar para tus paquetes privados.
  3. Crea un repositorio virtual que esté configurado para priorizar tu repositorio estándar si existe una versión del mismo paquete en ambos repositorios.
  4. Configura administradores de paquetes y otras herramientas para leer desde la solo en el repositorio, de modo que la lógica del cliente no se involucre en el repositorio selección.

Para obtener información sobre otras prácticas recomendadas de administración de dependencias, consulta Administración de dependencias.

Cómo los repositorios virtuales seleccionan un repositorio upstream

Cada repositorio upstream debe tener una prioridad configurada. La prioridad es un número entero que actúa como un peso, no como una clasificación. Esto significa que los repositorios con un valor de prioridad más alto tienen prioridad sobre los repositorios con menor los valores de prioridad.

Cuando solicitas un artefacto que se encuentra en varios repositorios ascendentes, Artifact Registry usa la siguiente lógica de priorización:

  • Se prioriza el repositorio con el valor más alto. Por ejemplo, un valor de 10 se considera de prioridad más alta que un valor de 1.
  • Si varios repositorios upstream tienen la misma prioridad, el artefacto y se puede entregar desde cualquiera de esos repositorios.

Cuando configuras directamente un cliente para que busque un repositorio virtual y repositorios adicionales, es posible que el cliente siga descargando artefactos de repositorios fuera de Artifact Registry.

Por ejemplo, si configuras la herramienta pip de Python para buscar en PyPI y en una en el repositorio de código fuente, es posible que tu paquete se descargue directamente de PyPI porque pip elegirá la versión más reciente de un paquete, independientemente de la del que proviene. Si pip está configurado para buscar solo en la carpeta repositorio, puedes controlar la prioridad de todos los repositorios upstream, incluido un repositorio remoto upstream que funciona como proxy para PyPI.

Formatos de repositorio compatibles

Puedes crear repositorios virtuales para seguir Artifact Registry Formatos de repositorio de Artifact Registry:

Paquetes de idioma:

Paquetes del SO:

Si eres nuevo en Artifact Registry, puedes usar las guías de inicio rápido para aprender sobre la configuración de repositorios estándar para estos formatos.

Limitaciones

Además de las cuotas y limitaciones de Artifact Registry, las instancias Los repositorios tienen las siguientes limitaciones:

  • Los repositorios upstream estándar de Artifact Registry deben estar en la misma región o multirregión que el en un repositorio virtual, pero también puede estar en diferentes proyectos de Google Cloud.
  • Los repositorios virtuales de Maven no permiten configurar la política de la versión para tomar instantáneas. o lanzar.

  • Los upstream de Apt y Yum deben ser repositorios estándar de Artifact Registry.

  • Los repositorios estándar de Apt y Yum actualizan el índice del paquete de forma asíncrona. después de que se importa, sube o borra un paquete. Para repositorios pequeños, volver a generar el índice puede demorar varios segundos. En el caso de los repositorios más grandes, la reindexación puede tardar varios minutos o más. Después de que se complete la reindexación, Los clientes Apt y Yum pueden ver el cambio en el repositorio.

¿Qué sigue?