En este documento se ofrece una descripción general de los repositorios virtuales. Para ver instrucciones sobre cómo crear un repositorio virtual, consulta el artículo Crear 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 varios repositorios de upstream. Un repositorio upstream puede ser un repositorio estándar o remoto de Artifact Registry.
Los otros modos de repositorio son los siguientes:
- Estándar: es el modo de repositorio predeterminado. Puedes subir o publicar artefactos, como paquetes privados, directamente en 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 las herramientas.
- Remoto: (solo repositorios de paquetes de lenguaje): una caché de extracción para artefactos de repositorios públicos, como Maven Central o PyPI. Actúa como proxy de los repositorios públicos para que tengas más control sobre tus dependencias externas.
Casos prácticos y ventajas
- Configuración del cliente más sencilla
En el caso de las tareas que solo requieren acceso de lectura a los repositorios, solo tiene que configurar un repositorio de Artifact Registry para acceder a los artefactos almacenados en varios repositorios upstream.
Por ejemplo:
- Un repositorio virtual de paquetes Maven puede servir paquetes Java privados desde un repositorio estándar de Artifact Registry y paquetes Java públicos desde un repositorio remoto que almacena en caché paquetes públicos de Maven Central.
- Un repositorio virtual puede servir paquetes de Python privados desde varios repositorios estándar upstream propiedad de diferentes equipos. Cada equipo tiene acceso de escritura a su repositorio upstream, pero descarga paquetes de otros equipos mediante el repositorio virtual.
- Resolución de dependencias más segura
Puedes asignar una prioridad a los repositorios upstream para tener más control sobre el repositorio que Artifact Registry elige cuando un artefacto solicitado se encuentra en más de un repositorio upstream.
Algunas herramientas, como la herramienta
pip
de Python, no ofrecen 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 nueva versión 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 juntos para mitigar este riesgo:
- Crea un repositorio remoto como proxy del repositorio público.
- Crea un repositorio estándar para tus paquetes privados.
- Crea un repositorio virtual configurado para priorizar tu repositorio estándar si existe una versión del mismo paquete en ambos repositorios.
- Configura los gestores de paquetes y otras herramientas para que lean solo del repositorio virtual, de forma que la lógica del cliente no participe en la selección del repositorio.
Para obtener información sobre otras prácticas recomendadas de gestión de dependencias, consulta Gestión de dependencias.
Cómo seleccionan los repositorios virtuales un repositorio de upstream
Cada repositorio upstream debe tener una prioridad configurada. La prioridad es un número entero que actúa como peso, no como clasificación. Esto significa que los repositorios con un valor de prioridad más alto tienen prioridad sobre los repositorios con valores de prioridad más bajos.
Cuando solicitas un artefacto que está en varios repositorios upstream, 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
tiene mayor prioridad que un valor de1
. - Si varios repositorios upstream tienen la misma prioridad, el artefacto se puede servir desde cualquiera de esos repositorios.
Si configuras directamente un cliente para que busque en un repositorio virtual y en otros repositorios, es posible que el cliente siga descargando artefactos de repositorios que no estén en Artifact Registry.
Por ejemplo, si configura la herramienta Python pip
para buscar en PyPI y en un repositorio virtual, es posible que su paquete se descargue directamente de PyPI, ya que pip
siempre elegirá la versión más reciente de un paquete, independientemente del repositorio del que proceda. Si pip
está configurado para buscar solo en el repositorio virtual, puedes controlar la prioridad de todos los repositorios upstream, incluido un repositorio remoto upstream que actúe como proxy de PyPI.
Formatos de repositorio admitidos
Puede crear repositorios virtuales para los siguientes formatos de repositorios de Artifact Registry:
Paquetes de idiomas:
Paquetes del SO:
Si no tienes experiencia con Artifact Registry, puedes usar las guías de inicio rápido para aprender a configurar repositorios estándar para estos formatos.
Limitaciones
Además de las cuotas y limitaciones de Artifact Registry, los repositorios virtuales tienen las siguientes limitaciones:
- Los repositorios upstream estándar de Artifact Registry deben estar en la misma región o multirregión que el repositorio virtual, pero pueden estar en proyectos diferentes. Google Cloud
Los repositorios virtuales de Maven no permiten definir la política de versiones como de instantánea o de lanzamiento.
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 de paquetes de forma asíncrona después de importar, subir o eliminar un paquete. En el caso de los repositorios pequeños, la regeneración del índice puede tardar varios segundos. En el caso de los repositorios más grandes, la reindexación puede tardar varios minutos o más. Una vez completada la reindexación, los clientes de Apt y Yum podrán ver el cambio en el repositorio.
Siguientes pasos
- Crea repositorios virtuales.
- Para obtener más información sobre los repositorios de Artifact Registry, consulta el resumen de repositorios.