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
- Crea repository remoti.
- Scopri di più sui repository di Artifact Registry leggendo la panoramica dei repository.