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 enGoogle 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 publicará la copia almacenada en caché.
Si solicitas un artefacto de una fuente upstream que no existe o 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 los formatos admitidos. Para obtener más información sobre cómo autenticarse en las fuentes upstream de repositorios remotos, consulta Configura la autenticación en las fuentes upstream de repositorios remotos.
Casos de uso y beneficios
- Acceso más rápido y confiable a los artefactos
- Almacenar copias 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 no está disponible 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 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.
En lugar de configurar los clientes directamente para que busquen en varios repositorios, puedes configurar repositorios virtuales para priorizar tus repositorios privados por sobre los remotos.
- Reduce el costo de transferencia de datos
Usa repositorios remotos para almacenar en caché los artefactos en la misma región o multirregión que tus tiempos de ejecución y, así, 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 rechaza 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 para la administración de dependencias, consulta Administración de dependencias.
Actualizaciones de los índices y los metadatos de los 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 indican en la siguiente tabla:
| Formato | Tipo de archivo | Antigüedad predeterminada de la actualización |
|---|---|---|
| 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 o de 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 conocer los formatos disponibles para los repositorios remotos predeterminados y definidos por el usuario.
URLs de upstream predeterminadas
Hay varias URLs de repositorios upstream comunes disponibles como selecciones predeterminadas para mayor comodidad en los siguientes formatos.
| Formato | tipos de paquetes | URL upstream | Nombre del ajuste predeterminado ascendente |
|---|---|---|---|
| Docker | Público o privado | https://registry-1.docker.io |
DOCKER-HUB |
| Go | Público | https://proxy.golang.org |
https://proxy.golang.org |
| Maven | Público o privado | https://repo.maven.apache.org/maven2 |
MAVEN-CENTRAL |
| npm | Público o privado | https://registry.npmjs.org |
NPMJS |
| Python | Público | https://pypi.io |
PYPI |
| Paquetes del SO (vista previa) | Público | Consulta Paquetes de SO compatibles con upstream | Consulta Paquetes de SO compatibles con upstream |
Upstreams preestablecidos de paquetes del SO
Puedes crear un repositorio remoto de paquetes del SO eligiendo una de las URLs base predeterminadas comunes del repositorio upstream 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
|
| Fedora Extra Packages for Enterprise Linux (EPEL) | https://dl.fedoraproject.org/pub/epel
|
EPEL
|
Upstreams del repositorio de Artifact Registry
Puedes crear repositorios remotos con repositorios en formato estándar de Artifact Registry como repositorios upstream para los siguientes formatos:
- Docker
- npm
- Maven
- Python
URL personalizadas
Puedes ingresar directamente la URL de tu repositorio remoto, sin usar una de las fuentes upstream predeterminadas para los siguientes formatos. Los URIs upstream de repositorios remotos personalizados deben usar HTTPS. No se admiten los URIs upstream de HTTP sin encriptar.
- Docker
- npm
- Maven
- Python
En la siguiente tabla no exhaustiva, se enumeran algunos URI ascendentes 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 |
Galería pública de ECR de AWS |
| Docker | https://registry.k8s.io |
Registro de contenedores de Kubernetes |
| Docker | https://MY_NEXUS_IP |
Nexus |
| npm | https://registry.npmjs.org |
npm |
| npm | https://npm.pkg.github.com |
Registro de GitHub Npm |
| 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. El extremo upstream debe usar HTTPS.
- MY_UPSTREAM_REPOSITORY es el nombre de tu repositorio upstream, que 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 establecer la política de versión en instantánea o versión.
- Las fuentes ascendentes deben ser accesibles a través de Internet. Los repositorios remotos no admiten fuentes upstream locales ni de redes de nube privada virtual (VPC) sin una dirección IP pública.
- Los URIs upstream de repositorios remotos personalizados deben usar HTTPS. No se admiten URIs upstream de HTTP sin encriptar.
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. Si bien puedes descargar directamente desde repositorios estándar individuales, acceder a grupos de repositorios con un repositorio virtual simplifica la configuración de herramientas.
- Conector (versión preliminar): Es un repositorio que actúa como proxy para una fuente upstream, pero no almacena en caché artefactos en Artifact Registry. En cambio, todas las solicitudes se realizan a la fuente upstream. Los repositorios de conectores son útiles si necesitas una auditoría completa de tu fuente upstream o tienes políticas que impiden el almacenamiento en caché de artefactos.
- 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?
- Crea repositorios remotos.
- Obtén más información sobre los repositorios de Artifact Registry en la Descripción general de los repositorios.