Questa pagina descrive come creare un'istanza virtuale Artifact Registry repository.
I repository virtuali fungono da unico punto di accesso da scaricare, installare il deployment degli artefatti nello stesso formato da uno o più repository upstream. Il repository upstream può essere uno standard Artifact Registry o repository Git.
Le altre modalità di repository sono:
- Standard: la modalità di repository predefinita. Carichi o pubblichi come pacchetti privati direttamente nei repository standard. Sebbene sia possibile scaricare direttamente da singoli repository standard, l'accesso a gruppi di repository con un repository virtuale semplifica della configurazione dello strumento.
- Remote (solo repository di pacchetti di lingua): un pull-through per gli artefatti in repository pubblici come Maven Central o PyPI. Agisce da proxy per i repository pubblici in modo che tu abbia un maggiore controllo sulle dipendenze esterne.
Per ulteriori informazioni su come funzionano i repository virtuali, consulta Panoramica del repository virtuale.
Prima di iniziare
Abilita Artifact Registry, inclusa l'abilitazione dell'API Artifact Registry installando l'ultima versione di Google Cloud CLI.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire i repository, chiedi all'amministratore di concederti seguenti ruoli IAM:
-
Crea repository virtuali e concedi l'accesso a singoli repository:
Amministratore repository Artifact Registry (
roles/artifactregistry.repoAdmin
) del progetto Google Cloud, -
Concedi l'accesso ai repository a livello di progetto:
Amministratore IAM progetto (
roles/resourcemanager.projectIamAdmin
) del progetto Google Cloud, -
Concedi l'accesso ai repository a livello di cartella:
Amministratore cartelle (
roles/resourcemanager.folderAdmin
) sulla cartella -
Concedi l'accesso ai repository a livello di organizzazione:
Amministratore organizzazione (
roles/resourcemanager.organizationAdmin
) dell'organizzazione Google Cloud
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.
Se i repository upstream si trovano in altri progetti, un amministratore i progetti con repository upstream devono avere le autorizzazioni per gestire l'accesso ai repository.
Crea repository upstream
Prima di configurare un repository virtuale, crea i repository upstream che che vuoi rendere disponibile con il repository virtuale.
Crea i repository upstream nello stesso account Google Cloud regione in cui prevedi di creare il repository virtuale.
I repository virtuali utilizzano l'agente di servizio Artifact Registry per l'autenticazione nei repository upstream. Devi concedere il servizio l'accesso in lettura dell'agente ai repository upstream.
Puoi concedere il ruolo Lettore Artifact Registry alla Agente di servizio Artifact Registry nel progetto senza dover concedere l'accesso a singoli upstream repository.
In ogni progetto con repository upstream, esegui questo comando:
gcloud projects add-iam-policy-binding UPSTREAM_PROJECT_ID \ --member serviceAccount:service-VIRTUAL-REPO-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \ --role roles/artifactregistry.reader
Dove
- UPSTREAM_PROJECT_ID è l'ID del progetto Google Cloud con il repository upstream.
- VIRTUAL_REPO_PROJECT_NUMBER è il numero di progetto del progetto Google Cloud per nel tuo repository virtuale.
In alternativa, se vuoi concedere al servizio un ruolo con ambito più limitato agente, aggiungi l'autorizzazione
artifactregistry.repositories.readViaVirtualRepository
a un ruolo personalizzato e assegnare il ruolo all'agente di servizio.Per ulteriori informazioni sulla concessione delle autorizzazioni, consulta documentazione sul controllo dell'accesso.
Crea un repository virtuale
Quando crei un repository, devi configurare le seguenti impostazioni che non può essere modificato dopo la creazione del repository:
- Formato artefatto.
- Modalità repository, se sono disponibili più modalità per il formato selezionato.
- Posizione del repository.
- Crittografia con chiavi di proprietà e gestite da Google chiavi di crittografia gestite dal cliente. Artifact Registry utilizza Chiavi di proprietà di Google e gestite da Google per impostazione predefinita.
Artifact Registry applica i vincoli dei criteri dell'organizzazione che richiedono una CMEK per criptare le risorse o limitare le risorse di Cloud KMS per la protezione CMEK.
Crea un repository virtuale utilizzando la console Google Cloud
Apri la pagina Repository nella console Google Cloud.
Fai clic su Crea repository.
Specifica il nome del repository. Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.
Seleziona il formato del repository.
In Modalità repository, seleziona Virtuale.
In Upstream del repository virtuale, fai clic su Aggiungi upstream per aggiungerlo un repository upstream.
- Un repository a monte può essere un repository standard, remoto o virtuale.
- Un repository upstream deve trovarsi nella stessa località ma può trovarsi in un altro progetto Google Cloud.
- Un repository upstream deve essere lo stesso formato dell'artefatto del repository repository Git.
Specificare una priorità e un nome del criterio per ogni upstream repository Git. I valori con priorità più alta hanno la precedenza sui valori più bassi. Lascia spazio tra i valori di priorità per aumentare la flessibilità dell'aggiunta repository a monte con priorità che si trovano tra i valori esistenti.
In Tipo di località, scegli la località del repository:
Scegli il tipo di località: Regione o Più regioni. L'elenco di le località cambiano in base alla selezione.
Nell'elenco Regione o Più regioni, seleziona una località.
Per informazioni sui tipi di località e sulle località supportate, vedi Località dei repository
Aggiungi una descrizione per il repository. Le descrizioni aiutano a identificare lo scopo del repository e il tipo di artefatti che contiene.
Non includere dati sensibili, in quanto le descrizioni dei repository non è criptato.
Se vuoi utilizzare le etichette per organizzare fai clic su Aggiungi etichetta e inserisci la coppia chiave-valore dell'etichetta. Puoi aggiungere, modificare o rimuovere le etichette dopo aver creato repository Git.
Nella sezione Crittografia, scegli il meccanismo di crittografia per nel repository.
- Chiave gestita da Google: cripta i contenuti del repository con una Chiave di proprietà di Google e gestita da Google.
- Chiave gestita dal cliente: cripta i contenuti del repository con una chiave che puoi controllare tramite Cloud Key Management Service. Per istruzioni sulla configurazione della chiave, consulta Configurazione di CMEK per i repository.
Fai clic su Crea.
Artifact Registry crea il repository e lo aggiunge all'elenco di repository.
Dopo aver creato il repository:
- Concedi l'accesso al repository.
Configurare Docker, gestori di pacchetti e altri client di terze parti per eseguire l'autenticazione nei repository.
Crea un repository virtuale utilizzando gcloud CLI
Per creare un repository virtuale, definisci i repository upstream in una dei criteri e poi creare il repository utilizzando il file dei criteri.
Crea un file dei criteri upstream in formato JSON con le seguenti impostazioni:
[{ "id" : "POLICY_ID", "repository" : "UPSTREAM_REPOSITORY_RESOURCE_NAME", "priority" : PRIORITY }, {...}]
POLICY_ID
è un nome per il criterio. Ogni upstream il repository nel criterio deve avere un ID criterio univoco.UPSTREAM_REPO_RESOURCE_NAME
è il nome dell'upstream repository nel formato:projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY
- Un repository a monte può essere un repository standard, remoto o virtuale.
- Un repository upstream deve trovarsi nella stessa località ma può trovarsi in un altro progetto Google Cloud.
- Un repository upstream deve essere lo stesso formato dell'artefatto del repository repository Git.
PRIORITY
è un numero intero che indica il priorità per il repository upstream. Priorità più elevata i valori hanno la precedenza sui valori inferiori.
L'esempio seguente mostra un file di criteri denominato
policies.json
con quattro repository upstream.upstream1
è il valore più alto perpriority
, quindi Artifact Registry lo cercherà prima.upstream-test
ha il valorepriority
più basso, quindi Artifact Registry eseguirà la ricerca per ultimo.upstream2
eupstream3
hanno la stessa priorità. Se Artifact Registry trova un pacchetto richiesto nei repository con la stessa priorità, può gestire il pacchetto da entrambi i repository.[{ "id" : "upstream1", "repository" : "projects/myproject/locations/us-west1/repositories/python-repo1", "priority" : 100 }, { "id" : "upstream2", "repository" : "projects/myproject/locations/us-west1/repositories/python-repo2", "priority" : 80 }, { "id" : "upstream3", "repository" : "projects/myproject/locations/us-west1/repositories/python-repo2", "priority" : 80 }, { "id" : "upstream-test", "repository" : "projects/myproject/locations/us-west1/repositories/python-test-repo", "priority" : 20 }]
Questo esempio lascia anche uno spazio tra i valori di priorità. Queste lacune offrono la flessibilità di aggiungere repository a monte con priorità in tra i valori esistenti. Ad esempio, puoi aggiungere
upstream-3
repository con priorità70
, così Artifact Registry cerca prima del giornoupstream-test
.Valuta la possibilità di archiviare il file dei criteri upstream nel tuo sistema di controllo del codice sorgente in modo che che puoi riutilizzare in un secondo momento per apportare modifiche alle impostazioni del repository upstream e monitorare le modifiche storiche.
Nella directory in cui si trova il file dei criteri upstream, esegui questo comando per creare il repository virtuale:
gcloud artifacts repositories create VIRTUAL-REPOSITORY-NAME \ --project=PROJECT_ID \ --repository-format=FORMAT \ --mode=virtual-repository \ --location=LOCATION \ --description="DESCRIPTION" \ --upstream-policy-file=UPSTREAM_POLICY_FILE
Sostituisci quanto segue:
VIRTUAL-REPOSITORY-NAME
è il nome del virtuale repository Git.PROJECT_ID
è l'ID del progetto in cui ti trovi creando il repository virtuale. Se questo flag viene omesso, il valore predefinito o predefinito.FORMAT
è il formato del repository. Le seguenti sono disponibili i seguenti valori:apt
(anteprima privata)docker
maven
npm
python
yum
(anteprima privata)
LOCATION
indica una o più regioni location del repository. Puoi ometti questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui questo comando:gcloud artifacts locations list
DESCRIPTION
è una descrizione facoltativa del repository. Non includere dati sensibili perché le descrizioni dei repository non sono criptato.UPSTREAM_POLICY_FILE
è un percorso del criterio upstream .
Ad esempio, il comando seguente crea un repository virtuale denominato
virtual-repo
per i pacchetti Python nella regioneus-west1
con impostazioni inpolicies.json
.gcloud artifacts repositories create virtual-repo \ --repository-format=python \ --mode=virtual-repository \ --location=us-west1 \ --description="Python virtual repository" \ --upstream-policy-file=policies.json
Artifact Registry crea il repository virtuale.
Crea un repository virtuale con Terraform
Usa la risorsa google_artifact_registry_repository
per creare repository.
Versione terraform-provider-google
È obbligatorio almeno 5.0.0
.
Se non hai mai utilizzato Terraform per Google Cloud, consulta Inizia - Google Cloud nella Sito web di HashiCorp.
L'esempio seguente definisce il provider, un repository virtuale con
Nome della risorsa Terraform my-repo
e repository upstream con la risorsa Terraform
nome risorsa my-repo-upstream
.
Docker
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
location = "UPSTREAM_LOCATION"
repository_id = "UPSTREAM_REPOSITORY_ID"
description = "UPSTREAM_REPOSITORY_DESCRIPTION"
format = "docker"
}
resource "google_artifact_registry_repository" "my-repo" {
depends_on = []
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "VIRTUAL_REPOSITORY_DESCRIPTION"
format = "docker"
kms_key_name = "KEY"
mode = "VIRTUAL_REPOSITORY"
virtual_repository_config {
upstream_policies {
id = "UPSTREAM_REPOSITORY_ID"
repository = google_artifact_registry_repository.my-repo-upstream.id
priority = PRIORITY
}
}
}
Dove
- PROJECT-ID è l'ID del progetto Google Cloud.
- UPSTREAM_LOCATION è la località del repository upstream. Tieni presente che il repository virtuale e l'upstream devono trovarsi nella stessa regione o in più regioni.
- UPSTREAM_REPOSITORY_ID è l'ID del repository upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION è la descrizione facoltativa del repository a monte.
- LOCATION è la località del repository virtuale.
- REPOSITORY_ID è l'ID del repository virtuale.
- DESCRIPTION è la descrizione facoltativa per l'istanza virtuale repository Git. Non includere dati sensibili, in quanto le descrizioni dei repository non sono crittografati.
- KEY è il nome della chiave di Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita: chiavi di proprietà di Google e gestite da Google.
- PRIORITY è il valore di priorità facoltativo. La priorità più alta è 1. Le voci con un valore di priorità maggiore hanno la precedenza nel pull ordine.
Maven
Se non specifichi un criterio di versione, Artifact Registry crea un Repository Maven in cui sono archiviati snapshot e release dei pacchetti per impostazione predefinita.
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
location = "UPSTREAM_LOCATION"
repository_id = "UPSTREAM_REPOSITORY_ID"
description = "UPSTREAM_REPOSITORY_DESCRIPTION"
format = "maven"
}
resource "google_artifact_registry_repository" "my-repo" {
depends_on = []
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "VIRTUAL_REPOSITORY_DESCRIPTION"
format = "maven"
kms_key_name = "KEY"
mode = "VIRTUAL_REPOSITORY"
virtual_repository_config {
upstream_policies {
id = "UPSTREAM_REPOSITORY_ID"
repository = google_artifact_registry_repository.my-repo-upstream.id
priority = PRIORITY
}
}
}
Dove
- PROJECT-ID è l'ID del progetto Google Cloud.
- UPSTREAM_LOCATION è la località del repository upstream. Tieni presente che il repository virtuale e l'upstream devono trovarsi nella stessa regione o in più regioni.
- UPSTREAM_REPOSITORY_ID è l'ID del repository upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION è la descrizione facoltativa del repository a monte.
- LOCATION è la località del repository virtuale.
- REPOSITORY_ID è l'ID del repository virtuale.
- DESCRIPTION è la descrizione facoltativa per l'istanza virtuale repository Git. Non includere dati sensibili, in quanto le descrizioni dei repository non sono crittografati.
- KEY è il nome della chiave di Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita: chiavi di proprietà di Google e gestite da Google.
- PRIORITY è il valore di priorità facoltativo. La priorità più alta è 1. Le voci con un valore di priorità maggiore hanno la precedenza nel pull ordine.
Per archiviare versioni di snapshot e release in diverse
repository, specifica un criterio di versione
utilizzando un blocco maven_config
. Questo blocco supporta
le seguenti impostazioni:
version_policy
imposta il criterio di versione con uno dei seguenti valori:VERSION_POLICY_UNSPECIFIED
: archivia pacchetti di snapshot e di release. Questo è l'impostazione predefinita.- LANCIO: soltanto pacchetti release dello store.
- SNAPSHOT: archivia solo i pacchetti di snapshot.
allow_snapshot_overwrites
configura un repository con unSNAPSHOT
criterio di versione per accettare snapshot non univoci che sovrascrivono più versioni del repository.
L'esempio seguente definisce un Repository Maven con una versione di release .
provider "google" {
project = "my-project"
}
resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta
location = "us-central1"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
maven_config {
version_policy = "RELEASE"
}
}
npm
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
location = "UPSTREAM_LOCATION"
repository_id = "UPSTREAM_REPOSITORY_ID"
description = "UPSTREAM_REPOSITORY_DESCRIPTION"
format = "npm"
}
resource "google_artifact_registry_repository" "my-repo" {
depends_on = []
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "VIRTUAL_REPOSITORY_DESCRIPTION"
format = "npm"
kms_key_name = "KEY"
mode = "VIRTUAL_REPOSITORY"
virtual_repository_config {
upstream_policies {
id = "UPSTREAM_REPOSITORY_ID"
repository = google_artifact_registry_repository.my-repo-upstream.id
priority = PRIORITY
}
}
}
Dove
- PROJECT-ID è l'ID del progetto Google Cloud.
- UPSTREAM_LOCATION è la località del repository upstream. Tieni presente che il repository virtuale e l'upstream devono trovarsi nella stessa regione o in più regioni.
- UPSTREAM_REPOSITORY_ID è l'ID del repository upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION è la descrizione facoltativa del repository a monte.
- LOCATION è la località del repository virtuale.
- REPOSITORY_ID è l'ID del repository virtuale.
- DESCRIPTION è la descrizione facoltativa per l'istanza virtuale repository Git. Non includere dati sensibili, in quanto le descrizioni dei repository non sono crittografati.
- KEY è il nome della chiave di Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita: chiavi di proprietà di Google e gestite da Google.
- PRIORITY è il valore di priorità facoltativo. La priorità più alta è 1. Le voci con un valore di priorità maggiore hanno la precedenza nel pull ordine.
Python
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
location = "UPSTREAM_LOCATION"
repository_id = "UPSTREAM_REPOSITORY_ID"
description = "UPSTREAM_REPOSITORY_DESCRIPTION"
format = "python"
}
resource "google_artifact_registry_repository" "my-repo" {
depends_on = []
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "VIRTUAL_REPOSITORY_DESCRIPTION"
format = "python"
kms_key_name = "KEY"
mode = "VIRTUAL_REPOSITORY"
virtual_repository_config {
upstream_policies {
id = "UPSTREAM_REPOSITORY_ID"
repository = google_artifact_registry_repository.my-repo-upstream.id
priority = PRIORITY
}
}
}
Dove
- PROJECT-ID è l'ID del progetto Google Cloud.
- UPSTREAM_LOCATION è la località del repository upstream. Tieni presente che il repository virtuale e l'upstream devono trovarsi nella stessa regione o in più regioni.
- UPSTREAM_REPOSITORY_ID è l'ID del repository upstream.
- UPSTREAM_REPOSITORY_DESCRIPTION è la descrizione facoltativa del repository a monte.
- LOCATION è la località del repository virtuale.
- REPOSITORY_ID è l'ID del repository virtuale.
- DESCRIPTION è la descrizione facoltativa per l'istanza virtuale repository Git. Non includere dati sensibili, in quanto le descrizioni dei repository non sono crittografati.
- KEY è il nome della chiave di Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita: chiavi di proprietà di Google e gestite da Google.
- PRIORITY è il valore di priorità facoltativo. La priorità più alta è 1. Le voci con un valore di priorità maggiore hanno la precedenza nel pull ordine.
Artifact Registry crea il repository. Esegui questo comando per visualizzare una descrizione del repository:
gcloud artifacts repositories describe REPOSITORY \
--location=LOCATION
Dopo aver creato il repository:
- Concedi l'accesso al repository.
Configurare Docker, gestori di pacchetti e altri client di terze parti per eseguire l'autenticazione nei repository.
Aggiorna repository upstream
Puoi modificare l'elenco dei repository upstream o regolare la priorità dei repository upstream.
Console
Apri la pagina Repository nella console Google Cloud.
Nell'elenco dei repository, seleziona il repository virtuale e fai clic su Modifica repository:
Nell'elenco Upstream del repository virtuale, apporta le modifiche necessarie. Puoi aggiungere e rimuovere repository o modificare la priorità repository nell'elenco
Fai clic su Salva.
gcloud
Modifica il file dei criteri upstream con le tue modifiche. Ad esempio, potresti quando si desidera aggiungere un repository upstream o regolare le impostazioni di priorità.
Se vuoi rimuovere tutti i repository upstream, il file dei criteri deve e contengono un insieme vuoto di repository.
[]
Esegui questo comando per applicare le modifiche al repository virtuale.
gcloud artifacts repositories update REPOSITORY \ --upstream-policy-file=UPSTREAM_POLICY_FILE
Sostituisci
UPSTREAM_POLICY_FILE
con il percorso dell'upstream dei criteri.Per ulteriori informazioni sul comando, consulta Riferimento gcloud artefatti Repositories documentazione.
Modifica descrizioni repository
Puoi modificare la descrizione del repository dalla console Google Cloud oppure dal con gcloud CLI.
Console
Apri la pagina Repository nella console Google Cloud.
Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository:
Modifica la descrizione del repository e fai clic su Salva.
gcloud
Per aggiornare la descrizione del repository, esegui il comando:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT \
--location=LOCATION \
--description="DESCRIPTION"
Sostituisci quanto segue:
REPOSITORY
: il nome del repository. Se hai configurato predefinito, puoi omettere questo flag per usare il valore predefinito.PROJECT
: l'ID del progetto Google Cloud. Se questo flag viene omesso, in uso il progetto corrente o quello predefinito.LOCATION
: un una o più regioni località. Utilizza questo flag per visualizzare i repository in una posizione specifica. Se configurato una località predefinita puoi omettere questo flag per usare quello predefinito.DESCRIPTION
: una descrizione del repository.