Panoramica dei repository remoti

I repository remoti fungono da proxy per le origini upstream, come Docker Hub e Maven Central, e forniscono un maggiore controllo sulle dipendenze in Google Cloud. Questo documento descrive il funzionamento dei repository remoti e fornisce diversi casi d'uso.

Per istruzioni su come creare un repository remoto, consulta Creare repository remoti.

Come funzionano i repository remoti

I repository remoti archiviano gli artefatti dai repository standard di Artifact Registry e da origini esterne. La prima volta che richiedi una versione di un pacchetto, Artifact Registry scarica e memorizza nella cache il pacchetto nel repository remoto. La volta successiva che richiedi la stessa versione del pacchetto, Artifact Registry pubblica la copia memorizzata nella cache.

Se richiedi un artefatto da un'origine upstream che non esiste o non contiene la versione specificata, la richiesta non andrà a buon fine.

Autenticazione upstream

I repository remoti di Artifact Registry supportano l'autenticazione di base alle origini upstream per i formati supportati. Per saperne di più su come eseguire l'autenticazione alle origini upstream dei repository remoti, consulta Configurare l'autenticazione alle origini upstream dei repository remoti.

Casi d'uso e vantaggi

Accesso più rapido e affidabile agli artefatti
L'archiviazione delle copie memorizzate nella cache delle dipendenze pubbliche in Artifact Registry riduce la latenza quando altri Google Cloud servizi recuperano le immagini. Gli artefatti memorizzati nella cache sono ancora disponibili se il repository pubblico esterno è offline a causa di un'interruzione o di un altro problema.
Risoluzione delle dipendenze più sicura

Utilizza i repository remoti insieme ai repository virtuali per mitigare i rischi associati alle dipendenze pubbliche. Alcuni strumenti non forniscono un modo per controllare l'ordine di ricerca quando nel client è configurato un mix di repository privati e pubblici. Questo tipo di configurazione è vulnerabile a un attacco di confusione delle dipendenze, in cui qualcuno carica una nuova versione di un pacchetto con codice dannoso in un repository pubblico per indurre i client a scegliere la versione dannosa.

Anziché configurare i client direttamente per cercare più repository, puoi configurare i repository virtuali in modo da dare la priorità ai repository privati rispetto ai repository remoti.

Riduzione dei costi di trasferimento dei dati

Utilizza i repository remoti per memorizzare nella cache gli artefatti nella stessa regione o multiregione dei runtime per ridurre i costi di trasferimento dei dati.

Se Artifact Registry si trova in un perimetro di servizio dei Controlli di servizio VPC, per impostazione predefinita Artifact Registry nega l'accesso alle origini upstream esterne al perimetro. Per consentire ai repository remoti in una località specifica di accedere alle origini esterne configurate all'esterno del perimetro, consulta le istruzioni per la configurazione dei Controlli di servizio VPC.

Per scoprire altre best practice per la gestione delle dipendenze, consulta Gestione delle dipendenze.

Aggiornamenti degli indici e dei metadati dei pacchetti

I file modificabili, come gli indici e i metadati dei pacchetti, vengono aggiornati dall'origine upstream quando superano l'età predefinita. I valori predefiniti per i tipi di file specifici sono elencati nella tabella seguente:

Formato Tipo di file Età di aggiornamento predefinita
Maven maven-metadata.xml 5 minuti
archetype-catalog.xml 1 ora
Npm File manifest 5 minuti
Python File index 1 ora
Docker Cache di tag di elenco/recupero 1 ora
Apt/Yum (anteprima) File index 2 minuti
File di pacchetti 72 ore

Formati supportati

Consulta le sezioni seguenti per i formati disponibili per i repository remoti preimpostati e definiti dall'utente.

URL upstream preimpostati

Per comodità, sono disponibili come selezioni preimpostate diversi URL di repository upstream comuni nei seguenti formati.

Formato Tipi di pacchetti URL upstream Nome preimpostato upstream
Docker Pubblico o privato https://registry-1.docker.io DOCKER-HUB
Vai Pubblico https://proxy.golang.org https://proxy.golang.org
Maven Pubblico o privato https://repo.maven.apache.org/maven2 MAVEN-CENTRAL
npm Pubblico o privato https://registry.npmjs.org NPMJS
Python Pubblico https://pypi.io PYPI
Pacchetti del sistema operativo (anteprima) Pubblico Consulta le origini upstream supportate dei pacchetti del sistema operativo Consulta le origini upstream supportate dei pacchetti del sistema operativo

Origini upstream preimpostate dei pacchetti del sistema operativo

Puoi creare un repository remoto di pacchetti del sistema operativo scegliendo uno degli URL di base dei repository upstream preimpostati comuni e personalizzando il resto dell'URL per il repository specifico. Sono supportate le seguenti basi di repository:

Apt

Repository Prefisso URL Nome base del repository
Debian archiviato https://snapshot.debian.org DEBIAN_SNAPSHOT
Debian http://deb.debian.org DEBIAN
Ubuntu LTS o Pro http://archive.ubuntu.com UBUNTU

Yum

Repository Prefisso URL Nome base del repository
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

Origini upstream dei repository di Artifact Registry

Puoi creare repository remoti con repository in formato standard di Artifact Registry come origini upstream per i seguenti formati:

  • Docker
  • npm
  • Maven
  • Python

URL personalizzati

Puoi inserire direttamente l'URL del repository remoto, senza utilizzare una delle origini upstream preimpostate per i seguenti formati.

  • Docker
  • npm
  • Maven
  • Python

La seguente tabella non esaustiva elenca alcuni URI upstream comuni.

Formato URI upstream Nome registro
Docker https://ghcr.io Registro container GitHub
Docker https://registry-1.docker.io Docker Hub
Docker https://public.ecr.aws Galleria pubblica AWS ECR
Docker https://registry.k8s.io Registro container Kubernetes
Docker https://MY_NEXUS_IP Nexus
npm https://registry.npmjs.org npm
npm https://npm.pkg.github.com Registro npm GitHub
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 Indice dei pacchetti Python (PyPI)
Python https://MY_NEXUS_IP/repository/MY_UPSTREAM_REPOSITORY Nexus

Dove

  • MY_NEXUS_IP è l'indirizzo IP e la porta dell'istanza upstream di Nexus.
  • MY_UPSTREAM_REPOSITORY è il nome del repository upstream; utilizzato negli esempi di Nexus.

Limitazioni

Oltre alle quote e alle limitazioni di Artifact Registry, i repository remoti presentano le seguenti limitazioni:

  • I repository remoti Maven non consentono di impostare la policy di versione su snapshot o release.
  • Le origini upstream devono essere accessibili a internet. I repository remoti non supportano le origini upstream di rete on-premise o Virtual Private Cloud (VPC) senza un indirizzo IP pubblico.

Altre modalità di repository

Le altre modalità di repository sono le seguenti:

  • Standard: la modalità di repository predefinita. Carichi o pubblichi gli artefatti, come i pacchetti privati, direttamente nei repository standard. Sebbene tu possa scaricare direttamente dai singoli repository standard, l'accesso a gruppi di repository con un repository virtuale semplifica la configurazione degli strumenti.
  • Connettore (anteprima): un repository che funge da proxy per un'origine upstream, ma non memorizza nella cache gli artefatti in Artifact Registry. Al contrario, tutte le richieste vengono effettuate all'origine upstream. I repository dei connettori sono utili se richiedi la completa controllabilità dell'origine upstream o se hai policy che impediscono la memorizzazione nella cache degli artefatti.
  • Virtuale: un repository che funge da singolo punto di accesso per più repository upstream, inclusi repository remoti e standard repository.

Passaggi successivi