Descripción general de los repositorios remotos

Los repositorios remotos actúan como proxies para las fuentes upstream, como Docker Hub y Maven Central, y proporcionan más control sobre tus dependencias en Google Cloud. En este documento, se describe cómo funcionan los repositorios remotos y se proporcionan varios casos de uso.

Para obtener instrucciones sobre cómo crear un repositorio remoto, consulta Crea repositorios remotos.

Cómo funcionan los repositorios remotos

Los repositorios remotos almacenan artefactos de repositorios estándar de Artifact Registry y fuentes externas. La primera vez que solicitas una versión de un paquete, Artifact Registry descarga y almacena en caché el paquete en el repositorio remoto. La próxima vez que solicites la misma versión del paquete, Artifact Registry entregará la copia almacenada en caché.

Si solicitas un artefacto de una fuente upstream que no existe o que no contiene la versión que especificaste, la solicitud fallará.

Autenticación upstream

Los repositorios remotos de Artifact Registry admiten la autenticación básica en fuentes upstream para formatos compatibles. Para obtener más información sobre cómo autenticarte en fuentes upstream de repositorios remotos, consulta Configura la autenticación en fuentes upstream de repositorios remotos.

Casos de uso y beneficios

Acceso más rápido y confiable a los artefactos
Almacenar copias almacenadas en caché de tus dependencias públicas en Artifact Registry reduce la latencia cuando otros Google Cloud servicios recuperan imágenes. Los artefactos almacenados en caché también están disponibles si el repositorio público externo está sin conexión debido a una interrupción o algún otro problema.
Resolución de dependencias más segura

Usa repositorios remotos junto con repositorios virtuales para mitigar los riesgos asociados con las dependencias públicas. Algunas herramientas 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 para que elijan la versión incorrecta.

En lugar de configurar clientes directamente para buscar en varios repositorios, puedes configurar repositorios virtuales para priorizar tus repositorios privados sobre los repositorios remotos.

Reduce el costo de transferencia de datos

Usa repositorios remotos para almacenar en caché artefactos en la misma región o multirregión que tus entornos de ejecución para reducir los costos de transferencia de datos.

Si Artifact Registry se encuentra en un perímetro de servicio de los Controles del servicio de VPC, Artifact Registry deniega el acceso a las fuentes upstream fuera del perímetro de forma predeterminada. Para permitir que los repositorios remotos en una ubicación específica accedan a sus fuentes externas configuradas fuera del perímetro, consulta las instrucciones para la configuración de los Controles del servicio de VPC.

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

Actualizaciones de índices y metadatos de paquetes

Los archivos mutables, como los índices y los metadatos de paquetes, se actualizan desde la fuente upstream cuando superan la antigüedad predeterminada. Los valores predeterminados para tipos de archivos específicos se enumeran en la siguiente tabla:

Formato Tipo de archivo Antigüedad de actualización predeterminada
Maven maven-metadata.xml 5 minutos
archetype-catalog.xml 1 hora
Npm Archivos de manifiesto 5 minutos
Python Archivos de índice 1 hora
Docker Caché de etiquetas de lista/obtención 1 hora
Apt/Yum (vista previa) Archivos de índice 2 minutos
Archivos de paquetes 72 horas

Formatos admitidos

Consulta las siguientes secciones para ver los formatos disponibles para los repositorios remotos preestablecidos y definidos por el usuario.

URLs upstream preestablecidas

Una serie de URLs de repositorios upstream comunes están disponibles como selecciones preestablecidas para mayor comodidad en los siguientes formatos.

Formato Tipos de paquetes URL upstream Nombre preestablecido de la fuente upstream
Docker Pública o privada https://registry-1.docker.io DOCKER-HUB
Go Pública https://proxy.golang.org https://proxy.golang.org
Maven Pública o privada https://repo.maven.apache.org/maven2 MAVEN-CENTRAL
npm Pública o privada https://registry.npmjs.org NPMJS
Python Pública https://pypi.io PYPI
Paquetes de SO (vista previa) Pública Consulta las fuentes upstream admitidas de paquetes de SO Consulta las fuentes upstream admitidas de paquetes de SO

Fuentes upstream preestablecidas de paquetes de SO

Puedes crear un repositorio remoto de paquetes de SO eligiendo una de las URLs base de repositorios upstream preestablecidas comunes y personalizando el resto de la URL para el repositorio específico. Se admiten las siguientes bases de repositorios:

Apt

Repositorio Prefijo de URL Nombre base del repositorio
Debian archivado https://snapshot.debian.org DEBIAN_SNAPSHOT
Debian http://deb.debian.org DEBIAN
Ubuntu LTS o Pro http://archive.ubuntu.com UBUNTU

Yum

Repositorio Prefijo de URL Nombre base del repositorio
CentOS http://mirror.centos.org CENTOS
http://debuginfo.centos.org CENTOS_DEBUG
https://vault.centos.org CENTOS_VAULT
https://mirror.stream.centos.org CENTOS_STREAM
Rocky http://dl.rockylinux.org ROCKY
Paquetes adicionales de Fedora para Enterprise Linux (EPEL) https://dl.fedoraproject.org/pub/epel EPEL

Fuentes upstream de repositorios de Artifact Registry

Puedes crear repositorios remotos con repositorios de formato estándar de Artifact Registry como fuentes upstream para los siguientes formatos:

  • Docker
  • npm
  • Maven
  • Python

URLs personalizadas

Puedes ingresar la URL de tu repositorio remoto directamente, sin usar una de las fuentes upstream preestablecidas para los siguientes formatos.

  • Docker
  • npm
  • Maven
  • Python

En la siguiente tabla no exhaustiva, se enumeran algunas URIs upstream comunes.

Formato URI upstream Nombre del registro
Docker https://ghcr.io GitHub Container Registry
Docker https://registry-1.docker.io Docker Hub
Docker https://public.ecr.aws AWS ECR Public Gallery
Docker https://registry.k8s.io Kubernetes Container Registry
Docker https://MY_NEXUS_IP Nexus
npm https://registry.npmjs.org npm
npm https://npm.pkg.github.com GitHub Npm Registry
npm https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus
Maven https://repo.maven.apache.org/maven2 Maven Central
Maven https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus
Python https://pypi.io Índice de paquetes de Python (PyPI)
Python https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus

Dónde

  • MY_NEXUS_IP es la dirección IP y el puerto de tu instancia upstream de Nexus.
  • MY_UPSTREAM_REPOSITORY es el nombre de tu repositorio upstream; se usa en los ejemplos de Nexus.

Limitaciones

Además de las cuotas y limitaciones de Artifact Registry, los repositorios remotos tienen las siguientes limitaciones:

  • Los repositorios remotos de Maven no permiten configurar la política de versiones en snapshot o release.
  • Las fuentes upstream deben ser accesibles a través de Internet. Los repositorios remotos no admiten fuentes upstream locales ni de red de nube privada virtual (VPC) sin una dirección IP pública.

Otros modos de repositorio

Los otros modos de repositorio son los siguientes:

  • Estándar: Es el modo de repositorio predeterminado. Subes o publicas 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 la herramienta.
  • Virtual: Es un repositorio que actúa como un único punto de acceso para varios repositorios upstream, incluidos los repositorios remotos y estándar.

¿Qué sigue?