Questa pagina descrive come creare repository remoti di Artifact Registry.
I repository remoti memorizzano gli elementi delle seguenti origini upstream:
- Repository Artifact Registry standard.
- Sorgenti esterne come Docker Hub, Maven Central, l'indice dei pacchetti Python (PyPI), Debian o CentOS.
Un repository remoto funge da proxy per l'origine upstream, in modo da avere un maggiore controllo sulle dipendenze. La prima volta che richiedi una versione di un pacchetto, Artifact Registry lo scarica e memorizza nella cache nel repository remoto. La volta successiva che richiedi la stessa versione del pacchetto, Artifact Registry serve la copia memorizzata nella cache.
Se richiedi un elemento da un'origine a monte che non esiste o non contiene la versione specificata, la richiesta non andrà a buon fine.
Le altre modalità del repository sono:
- Standard: la modalità del repository predefinita. Carichi o pubblichi gli elementi, come i pacchetti privati, direttamente nei repository standard. Sebbene tu possa scaricare direttamente da singoli repository standard, accedere a gruppi di repository con un repository virtuale semplifica la configurazione dello strumento.
- Virtuale: un repository che funge da singolo punto di accesso per più repository upstream, inclusi quelli remoti e standard.
Per ulteriori dettagli sul funzionamento dei repository remoti, consulta la Panoramica dei repository remoti.
Prima di iniziare
- Abilita Artifact Registry, inclusa l'abilitazione dell'API Artifact Registry e l'installazione di Google Cloud CLI.
- (Facoltativo) Configura i valori predefiniti per i comandi gcloud CLI.
- Se hai bisogno di chiavi di crittografia gestite dal cliente (CMEK) per criptare i contenuti del repository, crea e abilita una chiave in Cloud KMS per il repository.
Se vuoi autenticarti in un repository a monte, abilita l'API Secret Manager.
gcloud services enable secretmanager.googleapis.com \ --project=PROJECT_ID
Se Artifact Registry si trova in un perimetro di servizio Controlli di servizio VPC, attiva l'API Access Context Manager se non è già attivata.
gcloud services enable accesscontextmanager.googleapis.com \ --project=PROJECT_ID
Se vuoi impostare un repository Artifact Registry come upstream e si trova in un progetto diverso dal repository remoto, devi concedere all'account di servizio per il progetto del repository remoto l'accesso al progetto del repository upstream prima di creare il repository remoto.
Concedi il ruolo Agente di servizio I repository remoti utilizzano Artifact Registry Service Agent per autenticarsi nei repository upstream di Artifact Registry. Devi concedere all'agente di servizio del repository remoto l'accesso in lettura al repository upstream.
Per concedere all'agente di servizio del repository remoto il ruolo Agente di servizio Artifact Registry nel repository di origine, esegui il seguente comando:
gcloud projects add-iam-policy-binding UPSTREAM_REPOSITORY \ --member serviceAccount:service-REMOTE_PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \ --location=REGION \ --project=UPSTREAM_PROJECT_ID \ --role roles/artifactregistry.serviceAgent
Sostituisci quanto segue:
UPSTREAM_REPOSITORY
è l'ID del repository upstream. I repository upstream di Artifact Registry devono essere repository in modalità standard.REMOTE_PROJECT_NUMBER
è il numero di progetto del progetto Google Cloud per il tuo repository remoto.REMOTE_PROJECT_ID
è l'ID del progetto Google Cloud per il tuo repository remoto.REGION
è la regione in cui vuoi creare il repository remoto.UPSTREAM_PROJECT_ID
è l'ID del progetto Google Cloud con il repository di origine.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire i repository, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Crea repository remoti e concedi l'accesso ai singoli repository:
Amministratore Artifact Registry (
roles/artifactregistry.admin
) nel progetto -
Salva le credenziali del repository di origine in una versione segreta:
Amministratore Secret Manager (
roles/secretmanager.admin
) nel progetto -
Concedi l'accesso alle origini a monte esterne a un perimetro di servizio Controlli di servizio VPC:
Access Context Manager Editor (
roles/accesscontextmanager.policyEditor
) nel progetto, nella cartella o nell'organizzazione in cui viene applicato il criterio di accesso
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Crea un repository remoto
Quando crei un repository remoto, devi configurare le seguenti impostazioni, che non possono essere modificate dopo la creazione del repository:
- Formato dell'elemento.
- La modalità del repository è impostata su remoto.
- Origine upstream del repository remoto.
- Posizione del repository.
- Crittografia con chiavi di proprietà di Google e gestite da Google o chiavi di crittografia gestite dal cliente. Per impostazione predefinita, Artifact Registry utilizza chiavi di crittografia di proprietà di Google e gestite da Google.
Artifact Registry applica i vincoli dei criteri dell'organizzazione che richiedono CMEK per criptare le risorse o limitare le chiavi Cloud KMS che possono essere utilizzate per la protezione CMEK.
Creare un repository remoto utilizzando la console Google Cloud
Apri la pagina Repositories (Repositoi) 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.
Nella sezione Formato, seleziona il formato del repository.
Nella sezione Modalità repository, seleziona Remote.
Nella sezione Origine repository remoto, seleziona uno dei seguenti modi per inserire l'URL del repository a monte:
- Seleziona l'origine preset a monte elencata per il tipo di formato.
- Seleziona Personalizzato per specificare l'URL completo di un repository pubblico o privato per i formati supportati.
- Seleziona Repository Artifact Registry per selezionare un repository Artifact Registry standard.
Se hai selezionato Personalizzato, inserisci l'URL completo del repository nel campo Repository personalizzato. L'URL non può essere modificato dopo la creazione del repository.
Per esempi di alcuni URL upstream comuni, consulta Upstream personalizzati.
Se hai selezionato Repository Artifact Registry:
- Nel campo Repository Artifact Registry, inserisci il nome completo del repository che vuoi utilizzare come upstream oppure fai clic su Sfoglia per visualizzare un elenco dei repository a cui hai accesso. Vengono elencati solo i repository dello stesso formato del repository remoto.
- Fai clic sul nome del repository che vuoi utilizzare come upstream.
- Fai clic su Seleziona.
Se hai selezionato uno degli upstream preimpostati o hai inserito un URL completo utilizzando il pulsante Personalizzato, in Modalità di autenticazione del repository remoto scegli una delle seguenti opzioni:
- Autenticato: per inserire il tuo nome utente e il tuo segreto per l'autenticazione nel repository upstream.
- Non autenticato: per saltare l'autenticazione al repository upstream.
Se hai selezionato Autenticato, inserisci quanto segue:
- Nel campo Nome utente, inserisci il tuo nome utente per il repository upstream.
- Nel campo Secret, inserisci la versione del secret in cui hai salvato la password per il repository di origine.
Puoi modificare questi valori dopo aver creato il repository. Per maggiori informazioni sull'autenticazione per gli upstream del repository remoto, consulta Configurare l'autenticazione per gli upstream del repository remoto.
Nella sezione Tipo di località, scegli la posizione del repository:
Scegli il tipo di località: Regione o Più regioni. L'elenco delle località cambia in base alla selezione.
Nell'elenco Regione o Più regioni, seleziona una località.
Per informazioni sui tipi di località e sulle località supportate, consulta Località dei repository
Aggiungi una descrizione per il repository. Le descrizioni aiutano a identificare lo scopo del repository e il tipo di elementi che contiene.
Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.
Se vuoi utilizzare le etichette per organizzare i tuoi repository, fai clic su Aggiungi etichetta e inserisci la coppia chiave-valore per l'etichetta. Puoi aggiungere, modificare o rimuovere le etichette dopo aver creato il repository.
Nella sezione Crittografia, scegli il meccanismo di crittografia per il repository.
- Chiave gestita da Google: cripta i contenuti del repository con una chiave di proprietà e gestita da Google.
- Chiave gestita dal cliente: cripta i contenuti del repository con una chiave che controlli tramite Cloud Key Management Service. Per le istruzioni di configurazione delle chiavi, consulta Configurare CMEK per i repository.
Se vuoi utilizzare i criteri di pulizia per eliminare gli elementi inutilizzati, nella sezione Criteri di pulizia:
- Seleziona Esegui dry run per testare il criterio prima di applicarlo.
- Fai clic su Aggiungi criterio per aggiungere un criterio di conservazione o eliminazione al tuo repository.
- Assegna un nome descrittivo al criterio di pulizia nel campo Nome.
Nella sezione Tipo di criterio, seleziona una delle seguenti opzioni:
- Eliminazione condizionale: elimina gli elementi in base alle condizioni che hai definito.
- Conservazione condizionale: conserva gli elementi in base alle condizioni che definisci.
Conserva le versioni più recenti: conserva un numero predefinito di versioni più recenti per pacchetto.
Per maggiori dettagli sui criteri di pulizia, consulta Configurare i criteri di pulizia.
Nella sezione Analisi degli elementi, scegli le impostazioni di analisi delle vulnerabilità:
Attivato: consenti la scansione in questo repository. L'API Container Scanning deve essere abilitata nel progetto.
Quando abiliti l'API Container Scanning, la fatturazione inizia immediatamente. Dopo aver attivato l'API Container Scanning in un progetto, l'analisi delle vulnerabilità viene attivata per tutti i repository nuovi ed esistenti. Quando esegui il push di un'immagine in Artifact Registry, viene analizzata automaticamente da Artifact Analysis.
Disattivata: impedisce l'analisi in questo repository. Se l'API Container Scanning è abilitata nel progetto, l'analisi continua in altri repository; questo repository verrà escluso.
Per ulteriori informazioni sulle opzioni di analisi delle vulnerabilità, consulta Attivare e disattivare la scansione automatica.
Fai clic su Crea.
Artifact Registry crea il repository e lo aggiunge all'elenco dei repository.
Dopo aver creato il repository:
- Concedi l'accesso al repository.
- Configura Docker, i gestori dei pacchetti e altri client di terze parti per eseguire l'autenticazione nei repository.
- Configura i repository remoti di Artifact Registry per eseguire l'autenticazione alle loro origini a monte.
- Immagini container: Configura l'autenticazione del repository remoto in Docker Hub
- Pacchetti di lingue:
- Upstream personalizzati definiti dall'utente: configura l'autenticazione negli upstream del repository remoto
Crea un repository remoto utilizzando gcloud CLI
Per creare un repository, esegui il comando per il formato del repository appropriato:
Docker
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=docker \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--disable-vulnerability-scanning \
--remote-docker-repo=UPSTREAM
Flag facoltativi per l'autenticazione nel repository upstream:
--remote-username=USERNAME
--remote-password-secret-version=SECRET_VERSION
Sostituisci quanto segue:
REMOTE-REPOSITORY-NAME
con il nome del repository. Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.LOCATION
con la località regionale o multiregionale del repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comandogcloud artifacts locations list
.DESCRIPTION
con una descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.REMOTE-REPOSITORY-DESCRIPTION
con una descrizione della configurazione del repository esterno per questo repository remoto.USERNAME
facoltativamente, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository upstream.SECRET_VERSION
facoltativamente, se utilizzi l'autenticazione, con la versione segreta contenente la password del repository di origine.UPSTREAM
con il nome preimpostato dell'upstream, il percorso del repository Artifact Registry o l'URL definito dall'utente del repository upstream.
Per i repository upstream di Artifact Registry, formatta il percorso del repository in modo simile al seguente:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Per informazioni sugli upstream preimpostati disponibili e su quelli definiti dall'utente supportati, consulta Formati supportati.--disable-vulnerability-scanning
: è un flag facoltativo che configura il repository per disattivare l'analisi automatica delle vulnerabilità.--allow-vulnerability-scanning
: è un flag facoltativo che configura il repository in modo da consentire l'analisi automatica delle vulnerabilità. Per ulteriori informazioni, consulta Attivare o disattivare la ricerca automatica.
Ad esempio, il seguente comando crea un repository remoto denominato
my-repo
nella regione us-east1
nel progetto Google Cloud
my-project
e può autenticarsi nel repository di origine utilizzando
nome utente my-username
e la versione della secret
projects/my-project/secrets/my-secret/versions/1
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=docker \
--location=us-east1 \
--description="Remote Docker repository" \
--mode=remote-repository \
--remote-repo-config-desc="Docker Hub" \
--remote-username=my-username \
--remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
--remote-docker-repo=DOCKER-HUB
Per ulteriori informazioni sull'autenticazione nei repository upstream di Docker Hub, consulta Configurare l'autenticazione del repository remoto in Docker Hub.
Maven
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=maven \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--disable-vulnerability-scanning \
--remote-mvn-repo=UPSTREAM
Flag facoltativi per l'autenticazione nel repository upstream:
--remote-username=USERNAME
--remote-password-secret-version=SECRET_VERSION
Sostituisci quanto segue:
REMOTE-REPOSITORY-NAME
con il nome del repository. Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.LOCATION
con la località regionale o multiregionale del repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comandogcloud artifacts locations list
.DESCRIPTION
con una descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.REMOTE-REPOSITORY-DESCRIPTION
con una descrizione della configurazione del repository esterno per questo repository remoto.USERNAME
facoltativamente, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository upstream.SECRET_VERSION
facoltativamente, se utilizzi l'autenticazione, con la versione segreta contenente la password del repository di origine.UPSTREAM
con il nome preimpostato dell'upstream, il percorso del repository Artifact Registry o l'URL definito dall'utente del repository upstream.
Per i repository upstream di Artifact Registry, formatta il percorso del repository in modo simile al seguente:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Per informazioni sugli upstream preimpostati disponibili e su quelli definiti dall'utente supportati, consulta Formati supportati.--disable-vulnerability-scanning
: è un flag facoltativo che configura il repository per disattivare l'analisi automatica delle vulnerabilità.--allow-vulnerability-scanning
: è un flag facoltativo che configura il repository in modo da consentire l'analisi automatica delle vulnerabilità. Per ulteriori informazioni, consulta Attivare o disattivare la ricerca automatica.
Ad esempio, il seguente comando crea un repository remoto denominato
my-repo
nella regione us-east1
nel progetto Google Cloud
my-project
e può autenticarsi nel repository di origine utilizzando
nome utente my-username
e la versione della secret
projects/my-project/secrets/my-secret/versions/1
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=maven \
--location=us-east1 \
--description="Remote Maven repository" \
--mode=remote-repository \
--remote-repo-config-desc="Maven Central" \
--remote-username=my-username \
--remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
--remote-mvn-repo=MAVEN-CENTRAL
npm
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=npm \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--disable-vulnerability-scanning \
--remote-npm-repo=UPSTREAM
Flag facoltativi per l'autenticazione nel repository upstream:
--remote-username=USERNAME
--remote-password-secret-version=SECRET_VERSION
Sostituisci quanto segue:
REMOTE-REPOSITORY-NAME
con il nome del repository. Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.LOCATION
con la località regionale o multiregionale del repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comandogcloud artifacts locations list
.DESCRIPTION
con una descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.REMOTE-REPOSITORY-DESCRIPTION
con una descrizione della configurazione del repository esterno per questo repository remoto.USERNAME
facoltativamente, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository upstream.SECRET_VERSION
facoltativamente, se utilizzi l'autenticazione, con la versione segreta contenente la password del repository di origine.UPSTREAM
con il nome preimpostato dell'upstream, il percorso del repository Artifact Registry o l'URL definito dall'utente del repository upstream.
Per i repository upstream di Artifact Registry, formatta il percorso del repository in modo simile al seguente:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Per informazioni sugli upstream preimpostati disponibili e su quelli definiti dall'utente supportati, consulta Formati supportati.--disable-vulnerability-scanning
: è un flag facoltativo che configura il repository per disattivare l'analisi automatica delle vulnerabilità.--allow-vulnerability-scanning
: è un flag facoltativo che configura il repository in modo da consentire l'analisi automatica delle vulnerabilità. Per ulteriori informazioni, consulta Attivare o disattivare la ricerca automatica.
Ad esempio, il seguente comando crea un repository remoto denominato
my-repo
nella regione us-east1
nel progetto Google Cloud
my-project
e può autenticarsi nel repository upstream utilizzando
l'username my-username
e la versione della secret
projects/my-project/secrets/my-secret/versions/1
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=npm \
--location=us-east1 \
--description="Remote npm repository" \
--mode=remote-repository \
--remote-repo-config-desc="Public npm registry" \
--remote-username=my-username \
--remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
--remote-npm-repo=NPMJS
Python
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=python \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--disable-vulnerability-scanning \
--remote-python-repo=UPSTREAM
Flag facoltativi per l'autenticazione nel repository upstream:
--remote-username=USERNAME
--remote-password-secret-version=SECRET_VERSION
Sostituisci quanto segue:
REMOTE-REPOSITORY-NAME
con il nome del repository. Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.LOCATION
con la località regionale o multiregionale del repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comandogcloud artifacts locations list
.DESCRIPTION
con una descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.REMOTE-REPOSITORY-DESCRIPTION
con una descrizione della configurazione del repository esterno per questo repository remoto.USERNAME
facoltativamente, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository upstream.SECRET_VERSION
facoltativamente, se utilizzi l'autenticazione, con la versione segreta contenente la password del repository di origine.UPSTREAM
con il nome preimpostato dell'upstream, il percorso del repository Artifact Registry o l'URL definito dall'utente del repository upstream.
Per i repository upstream di Artifact Registry, formatta il percorso del repository in modo simile al seguente:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Per informazioni sugli upstream preimpostati disponibili e su quelli definiti dall'utente supportati, consulta Formati supportati.--disable-vulnerability-scanning
: è un flag facoltativo che configura il repository per disattivare l'analisi automatica delle vulnerabilità.--allow-vulnerability-scanning
: è un flag facoltativo che configura il repository in modo da consentire l'analisi automatica delle vulnerabilità. Per ulteriori informazioni, consulta Attivare o disattivare la ricerca automatica.
Ad esempio, il seguente comando crea un repository remoto denominato
my-repo
nella regione us-east1
nel progetto Google Cloud
my-project
e può autenticarsi nel repository di origine utilizzando
nome utente my-username
e la versione della secret
projects/my-project/secrets/my-secret/versions/1
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=python \
--location=us-east1 \
--description="Remote Python repository" \
--mode=remote-repository \
--remote-repo-config-desc="PyPI" \
--remote-username=my-username \
--remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
--remote-python-repo=PYPI
Apt (anteprima)
gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
--project=PROJECT_ID \
--repository-format=apt \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
--remote-apt-repo=APT_REPOSITORY_BASE \
--remote-apt-repo-path="APT_REPOSITORY_PATH"
Sostituisci quanto segue:
REMOTE_REPOSITORY_NAME
con il nome del repository. Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.LOCATION
con la località regionale o multiregionale del repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comandogcloud artifacts locations list
.DESCRIPTION
con una descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.REMOTE_REPOSITORY_DESCRIPTION
con una descrizione facoltativa per la configurazione del repository esterno per questo repository remoto.APT_REPOSITORY_BASE
con uno dei nomi di base del repository supportati elencati negli upstream supportati dal pacchetto OS per i repository remote Apt.APT_REPOSITORY_PATH
con il resto dell'URL del repository a monte che vuoi memorizzare nella cache nel repository remoto dopo la base del repository.
Ad esempio, il seguente comando crea un repository remoto denominato
my-repo
per memorizzare nella cache il repository Debian Buster nella regione us-east1
nel
progetto Google Cloud my-project
. L'URL completo del repository upstream è http://deb.debian.org/debian/dists/buster
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=apt \
--location=us-east1 \
--description="Apt remote repository" \
--mode=remote-repository \
--remote-repo-config-desc="Debian buster distribution" \
--remote-apt-repo=DEBIAN \
--remote-apt-repo-path="debian/dists/buster"
Yum (anteprima)
gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
--project=PROJECT_ID \
--repository-format=yum \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
--remote-yum-repo=YUM_REPOSITORY_BASE \
--remote-yum-repo-path="YUM_REPOSITORY_PATH"
Sostituisci quanto segue:
REMOTE_REPOSITORY_NAME
con il nome del repository. Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.LOCATION
con la località regionale o multiregionale del repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comandogcloud artifacts locations list
.DESCRIPTION
con una descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.REMOTE_REPOSITORY_DESCRIPTION
con una descrizione facoltativa per la configurazione del repository esterno per questo repository remoto.YUM_REPOSITORY_BASE
con uno dei nomi di base del repository supportati elencati negli upstream supportati dal pacchetto OS per i repository remote Yum.YUM_REPOSITORY_PATH
con il resto dell'URL del repository a monte che vuoi memorizzare nella cache nel repository remoto dopo la base del repository.
Ad esempio, il seguente comando crea un repository remoto per i pacchetti Yum chiamato my-repo
nella regione us-east1
nel progetto Google Cloud my-project
per il repository 9-stream/BaseOs/x86_64/os
a monte. L'URL completo del repository è https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=yum \
--location=us-east1 \
--description="Yum remote repository" \
--mode=remote-repository \
--remote-repo-config-desc="CentOS 8 x86" \
--remote-yum-repo=CENTOS_STREAM \
--remote-yum-repo-path="9-stream/BaseOs/x86_64/os"
Artifact Registry crea il tuo repository. Esegui questo comando per visualizzare una descrizione del repository:
gcloud artifacts repositories describe REMOTE_REPOSITORY_NAME \
--location=LOCATION
Dopo aver creato il repository:
- Concedi l'accesso al repository.
- Configura i criteri di pulizia per eliminare gli elementi non utilizzati.
- Configura Docker, i gestori dei pacchetti e altri client di terze parti per eseguire l'autenticazione nei repository.
- Configura i repository remoti di Artifact Registry per eseguire l'autenticazione alle loro origini a monte.
- Immagini container: Configura l'autenticazione del repository remoto in Docker Hub
- Pacchetti di lingue:
- Upstream personalizzati definiti dall'utente: configura l'autenticazione negli upstream del repository remoto
Creare un repository remoto utilizzando Terraform
Utilizza la risorsa google_artifact_registry_repository per creare repository.
È richiesta la versione 5.0.0
o successive di terraform-provider-google
.
Se non hai mai utilizzato Terraform per Google Cloud, consulta la pagina Introduzione - Google Cloud sul sito web di HashiCorp.
L'esempio seguente definisce il provider e un repository remoto con il nome della risorsa Terraform my-repo
.
Docker
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "docker"
kms_key_name = "KEY"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
docker_repository {
public_repository = "DOCKER_HUB"
}
}
cleanup_policy_dry_run = DRY_RUN_STATUS
cleanup_policies {
id = "POLICY_NAME"
action = "DELETE"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
older_than = "TIME_SINCE_UPLOAD"
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
most_recent_versions {
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
keep_count = KEEP_COUNT
}
}
}
Dove
PROJECT-ID
è l'ID progetto Google Cloud.LOCATION
è la posizione del repository.REPOSITORY_ID
è l'ID repository.DESCRIPTION
è la descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.KEY
è il nome della chiave Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita, le chiavi di crittografia gestite da Google.CONFIG_DESCRIPTION
è la descrizione facoltativa della fonte remota.DRY_RUN_STATUS
determina se i criteri di pulizia eliminano gli artefatti o se registrano solo gli artefatti che verrebbero eliminati se vengono impostati i criteri di pulizia nel repository. Ometti se non vuoi aggiungere criteri di pulizia al repository. *true
: imposta i criteri da eseguire in modalità di prova. Nessun artefatto viene eliminato in modalità di prova. *false
: applica i criteri di pulizia. Gli elementi vengono eliminati o conservati in base ai criteri. Per ulteriori informazioni sui criteri di pulizia, consulta Configurare i criteri di pulizia.POLICY_NAME
è il nome del criterio di pulizia.TAG_STATE
è lo stato del tag a cui applicare il criterio. I valori sonotagged
,untagged
eany
.any
si applica sia agli elementi taggati sia a quelli non taggati. Se in un repository sono abilitati i tag immutabili, gli elementi con tag non possono essere eliminati.TAG_PREFIX
,TAG_PREFIX_N
sono prefissi dei tag a cui applicare il criterio.PKG_PREFIX
ePKG_PREFIX_N
sono i prefissi dei pacchetti a cui applicare le norme.TIME_SINCE_UPLOAD
è il tempo trascorso dal caricamento di una versione dell'elemento nel repository, specificato come durata. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamentes
,m
,h
od
.KEEP_COUNT
è il numero di versioni per pacchetto di un artefatto da conservare nel repository.
Maven
Se non specifichi un criterio di versione, per impostazione predefinita Artifact Registry crea un repository Maven che archivia sia le versioni snapshot che quelle release dei pacchetti.
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "maven"
kms_key_name = "KEY"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
maven_repository {
public_repository = "MAVEN_CENTRAL"
}
}
cleanup_policy_dry_run = DRY_RUN_STATUS
cleanup_policies {
id = "POLICY_NAME"
action = "DELETE"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
older_than = "TIME_SINCE_UPLOAD"
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
most_recent_versions {
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
keep_count = KEEP_COUNT
}
}
}
Dove
PROJECT-ID
è l'ID progetto Google Cloud.LOCATION
è la posizione del repository.REPOSITORY_ID
è l'ID repository.DESCRIPTION
è la descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.KEY
è il nome della chiave Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita, le chiavi di crittografia gestite da Google.CONFIG_DESCRIPTION
è la descrizione facoltativa della fonte remota.DRY_RUN_STATUS
determina se i criteri di pulizia eliminano gli artefatti o se registrano solo gli artefatti che verrebbero eliminati se vengono impostati i criteri di pulizia nel repository. Ometti se non vuoi aggiungere criteri di pulizia al repository. *true
: imposta i criteri da eseguire in modalità di prova. Nessun artefatto viene eliminato in modalità di prova. *false
: applica i criteri di pulizia. Gli elementi vengono eliminati o conservati in base ai criteri. Per ulteriori informazioni sui criteri di pulizia, consulta Configurare i criteri di pulizia.POLICY_NAME
è il nome del criterio di pulizia.TAG_STATE
è lo stato del tag a cui applicare il criterio. I valori sonotagged
,untagged
eany
.any
si applica sia agli elementi taggati sia a quelli non taggati. Se in un repository sono abilitati i tag immutabili, gli elementi con tag non possono essere eliminati.TAG_PREFIX
,TAG_PREFIX_N
sono prefissi dei tag a cui applicare il criterio.PKG_PREFIX
ePKG_PREFIX_N
sono i prefissi dei pacchetti a cui applicare le norme.TIME_SINCE_UPLOAD
è il tempo trascorso dal caricamento di una versione dell'elemento nel repository, specificato come durata. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamentes
,m
,h
od
.KEEP_COUNT
è il numero di versioni per pacchetto di un artefatto da conservare nel repository.
Per archiviare le versioni di release e snapshot in diversi
repository, specifica un criterio di versione per il
repository 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 gli snapshot e i pacchetti di release. Questa è l'impostazione predefinita.- RELEASE: solo pacchetti di release dello Store.
- SNAPSHOT: archivia solo i pacchetti di snapshot.
allow_snapshot_overwrites
configura un repository con un criterio di versioneSNAPSHOT
per accettare snapshot non univoci che sovrascrivono le versioni esistenti nel repository.
L'esempio seguente definisce un repository Maven con un criterio di versione di release.
provider "google" {
project = "my-project"
}
resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta
location = "LOCATION"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
mode = "REMOTE_REPOSITORY"
maven_config {
version_policy = "RELEASE"
}
}
npm
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "npm"
kms_key_name = "KEY"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
npm_repository {
public_repository = "NPMJS"
}
}
cleanup_policy_dry_run = DRY_RUN_STATUS
cleanup_policies {
id = "POLICY_NAME"
action = "DELETE"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
older_than = "TIME_SINCE_UPLOAD"
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
most_recent_versions {
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
keep_count = KEEP_COUNT
}
}
}
Dove
PROJECT-ID
è l'ID progetto Google Cloud.LOCATION
è la posizione del repository.REPOSITORY_ID
è l'ID repository.DESCRIPTION
è la descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.KEY
è il nome della chiave Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita, le chiavi di crittografia gestite da Google.CONFIG_DESCRIPTION
è la descrizione facoltativa della fonte remota.DRY_RUN_STATUS
determina se i criteri di pulizia eliminano gli artefatti o se registrano solo gli artefatti che verrebbero eliminati se vengono impostati i criteri di pulizia nel repository. Ometti se non vuoi aggiungere criteri di pulizia al repository. *true
: imposta i criteri da eseguire in modalità di prova. Nessun artefatto viene eliminato in modalità di prova. *false
: applica i criteri di pulizia. Gli elementi vengono eliminati o conservati in base ai criteri. Per ulteriori informazioni sui criteri di pulizia, consulta Configurare i criteri di pulizia.POLICY_NAME
è il nome del criterio di pulizia.TAG_STATE
è lo stato del tag a cui applicare il criterio. I valori sonotagged
,untagged
eany
.any
si applica sia agli elementi taggati sia a quelli non taggati. Se in un repository sono abilitati i tag immutabili, gli elementi con tag non possono essere eliminati.TAG_PREFIX
,TAG_PREFIX_N
sono prefissi dei tag a cui applicare il criterio.PKG_PREFIX
ePKG_PREFIX_N
sono i prefissi dei pacchetti a cui applicare le norme.TIME_SINCE_UPLOAD
è il tempo trascorso dal caricamento di una versione dell'elemento nel repository, specificato come durata. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamentes
,m
,h
od
.KEEP_COUNT
è il numero di versioni per pacchetto di un artefatto da conservare nel repository.
Python
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "python"
kms_key_name = "KEY"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
python_repository {
public_repository = "PYPI"
}
}
cleanup_policy_dry_run = DRY_RUN_STATUS
cleanup_policies {
id = "POLICY_NAME"
action = "DELETE"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
older_than = "TIME_SINCE_UPLOAD"
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
most_recent_versions {
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
keep_count = KEEP_COUNT
}
}
}
Dove
PROJECT-ID
è l'ID progetto Google Cloud.LOCATION
è la posizione del repository.REPOSITORY_ID
è l'ID repository.DESCRIPTION
è la descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.KEY
è il nome della chiave Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita, le chiavi di crittografia gestite da Google.CONFIG_DESCRIPTION
è la descrizione facoltativa della fonte remota.DRY_RUN_STATUS
determina se i criteri di pulizia eliminano gli artefatti o se registrano solo gli artefatti che verrebbero eliminati se vengono impostati i criteri di pulizia nel repository. Ometti se non vuoi aggiungere criteri di pulizia al repository. *true
: imposta i criteri da eseguire in modalità di prova. Nessun artefatto viene eliminato in modalità di prova. *false
: applica i criteri di pulizia. Gli elementi vengono eliminati o conservati in base ai criteri. Per ulteriori informazioni sui criteri di pulizia, consulta Configurare i criteri di pulizia.POLICY_NAME
è il nome del criterio di pulizia.TAG_STATE
è lo stato del tag a cui applicare il criterio. I valori sonotagged
,untagged
eany
.any
si applica sia agli elementi taggati sia a quelli non taggati. Se in un repository sono abilitati i tag immutabili, gli elementi con tag non possono essere eliminati.TAG_PREFIX
,TAG_PREFIX_N
sono prefissi dei tag a cui applicare il criterio.PKG_PREFIX
ePKG_PREFIX_N
sono i prefissi dei pacchetti a cui applicare le norme.TIME_SINCE_UPLOAD
è il tempo trascorso dal caricamento di una versione dell'elemento nel repository, specificato come durata. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamentes
,m
,h
od
.KEEP_COUNT
è il numero di versioni per pacchetto di un artefatto da conservare nel repository.
Apt (anteprima)
provider "google" {
project = "PROJECT_ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "APT"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
apt_repository {
public_repository {
repository_base = "REPOSITORY_BASE"
repository_path = "REPOSITORY_PATH"
}
}
}
}
Dove
- PROJECT-ID è l'ID progetto Google Cloud.
- LOCATION è la posizione del repository.
- REPOSITORY_ID è l'ID repository.
- DESCRIPTION è la descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.
- CONFIG_DESCRIPTION è la descrizione facoltativa della fonte remota.
- REPOSITORY_BASE è la base del repository pubblico preimpostata per Apt.
I valori possibili sono
DEBIAN
eUBUNTU
. - REPOSITORY_PATH è il repository specifico della base. Ad
esempio
debian/dists/buster
.
Yum (anteprima)
provider "google" {
project = "PROJECT_ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "YUM"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
yum_repository {
public_repository {
repository_base = "REPOSITORY_BASE"
repository_path = "REPOSITORY_PATH"
}
}
}
}
Dove
- PROJECT-ID è l'ID progetto Google Cloud.
- LOCATION è la posizione del repository.
- REPOSITORY_ID è l'ID repository.
- DESCRIPTION è la descrizione facoltativa del repository. Non includere dati sensibili, poiché le descrizioni dei repository non sono criptate.
- CONFIG_DESCRIPTION è la descrizione facoltativa della fonte remota.
- REPOSITORY_BASE è la base del repository pubblico preimpostata per Yum.
I valori possibili sono
CENTOS
,CENTOS_DEBUG
,CENTOS_VAULT
,CENTOS_STREAM
,ROCKY
eEPEL
. - REPOSITORY_PATH è il repository specifico della base. Ad
esempio
"centos/8-stream/BaseOS/x86_64/os
.
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.
- Configura Docker, i gestori dei pacchetti e altri client di terze parti per eseguire l'autenticazione nei repository.
- Configura i repository remoti di Artifact Registry per eseguire l'autenticazione alle loro origini a monte.
- Immagini container: Configura l'autenticazione del repository remoto in Docker Hub
- Pacchetti di lingue:
- Upstream personalizzati definiti dall'utente: configura l'autenticazione negli upstream del repository remoto
Modificare le descrizioni dei repository
Puoi modificare la descrizione del repository dalla console Google Cloud o dalla gcloud CLI.
Console
Apri la pagina Repositories (Repositoi) nella console Google Cloud.
Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.
Modifica la descrizione del repository e poi 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 un repository predefinito, puoi omettere questo flag per utilizzare quello predefinito.PROJECT
: l'ID progetto Google Cloud. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.LOCATION
: una località regionale o multiregionale Utilizza questo flag per visualizzare i repository in una posizione specifica. Se hai configurato una posizione predefinita, puoi omettere questo flag per utilizzare quella predefinita.DESCRIPTION
: una descrizione del repository.
Accesso alle origini a monte in un perimetro di servizio
I servizi in un perimetro di servizio dei Controlli di servizio VPC hanno accesso limitato alle risorse esterne al perimetro.
Puoi consentire o negare l'accesso alle origini a monte all'interno di un progetto e di una località Google Cloud specificati.
Per impostazione predefinita, Artifact Registry nega l'accesso alle origini a monte se non hai concesso esplicitamente l'accesso.
Per Artifact Registry, il ruolo richiesto è Artifact Registry Administrator
(roles/artifactregistry.admin
).
Visualizzare le impostazioni per le origini a monte
Per visualizzare la configurazione per una combinazione specifica di progetto e località, esegui il seguente comando:
gcloud artifacts vpcsc-config describe \
--project=PROJECT_ID \
--location=LOCATION
Ad esempio, utilizza il seguente comando per visualizzare le impostazioni dei repository remoti in us-east1
nel progetto my-project
:
gcloud artifacts vpcsc-config describe \
--project=my-project \
--location=us-east1
Consenti l'accesso alle origini a monte
Per consentire l'accesso alle origini a monte in una posizione specificata, esegui il comando:
gcloud artifacts vpcsc-config allow \
--project=PROJECT_ID \
--location=LOCATION
Ad esempio, utilizza il seguente comando per consentire a tutti i repository remoti in us-east1
nel progetto my-project
di accedere alle origini a monte al di fuori del perimetro:
gcloud artifacts vpcsc-config allow \
--project=my-project \
--location=us-east1
Negare l'accesso alle origini upstream
Quando neghi l'accesso alle origini a monte, gli elementi archiviati esistenti nei repository remoti rimangono disponibili.
Per negare l'accesso alle origini a monte in una posizione specificata, esegui il comando:
gcloud artifacts vpcsc-config deny \
--project=PROJECT_ID \
--location=LOCATION
Ad esempio, utilizza il seguente comando per bloccare l'accesso alle origini a monte al di fuori del perimetro per tutti i repository remoti in us-west1
nel progetto my-project
:
gcloud artifacts vpcsc-config deny \
--project=my-project \
--location=us-west1
Passaggi successivi
- Crea un repository remoto Docker Hub.
- Scopri di più sui repository remoti di Artifact Registry.
- Configura l'autenticazione del repository remoto su Docker Hub.