Questa pagina descrive come creare repository remoti Artifact Registry.
I repository remoti archiviano artefatti da origini esterne preimpostate come Docker Hub, Maven Central, Python Package Index (PyPI), Debian o CentOS come nonché origini definite dall'utente per i formati supportati. R repository remoto funge da proxy per l'origine esterna, in modo che il controllo sulle dipendenze esterne. La prima volta che richiedi un di un pacchetto, Artifact Registry scarica e memorizza nella cache il pacchetto nel repository remoto. La prossima volta la stessa versione del pacchetto, Artifact Registry gestisce la copia memorizzata nella cache.
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.
- Virtuale: un repository che funge da singolo accesso punto di accesso per più repository upstream, inclusi repository remoti e standard repository.
Per maggiori dettagli su come funzionano i repository remoti, consulta Panoramica del repository remoto.
Prima di iniziare
- Abilita Artifact Registry, tra cui l'abilitazione dell'API Artifact Registry e l'installazione di Google Cloud CLI.
- (Facoltativo) Configura i valori predefiniti per i comandi gcloud CLI.
- Se sono necessarie chiavi di crittografia gestite dal cliente (CMEK) per criptare i contenuti del repository, creare e abilitare una chiave Cloud KMS per il repository.
Se vuoi eseguire l'autenticazione in un repository upstream, abilita il 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, abilitare l'API Access Context Manager, se non è già abilitata.
gcloud services enable accesscontextmanager.googleapis.com \ --project=PROJECT_ID
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire i repository, chiedi all'amministratore di concederti seguenti ruoli IAM:
-
Crea repository remoti e concedi l'accesso a singoli repository:
Amministratore Artifact Registry (
roles/artifactregistry.admin
) del progetto -
Salva le credenziali del repository upstream in una versione del secret:
Amministratore Secret Manager (
roles/secretmanager.admin
) del progetto -
Concedi l'accesso alle origini upstream esterne a un perimetro di servizio dei Controlli di servizio VPC:
Editor Gestore contesto accesso (
roles/accesscontextmanager.policyEditor
) Sul progetto, sulla cartella o sull'organizzazione in cui viene applicato il criterio di accesso.
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.
Crea un repository remoto
Quando crei un repository remoto, devi configurare le impostazioni seguenti: che non può essere modificato dopo la creazione del repository:
- Formato artefatto.
- Modalità repository impostata su remoto.
- Origine upstream preimpostata o definita dall'utente per il repository remoto.
- Posizione del repository.
- Crittografia con chiavi di proprietà e gestite da Google chiavi di crittografia gestite dal cliente. Artifact Registry utilizza Chiavi di crittografia 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 remoto 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.
Nella sezione Formato, seleziona il formato del repository.
Nella sezione Modalità repository, seleziona Remoto.
Nella sezione Origine repository remoto, seleziona il preset upstream o Personalizzato se vuoi utilizzare una l'URL definito dall'utente per l'upstream.
Facoltativo. Se utilizzi un upstream personalizzato, nel Repository personalizzato inserisci l'URL del repository personalizzato. L'URL non può essere modificato dopo il tag viene creato un repository.
In Modalità di autenticazione del repository remoto, scegli una delle seguenti opzioni:
- Autenticato: per inserire il tuo nome utente e il tuo secret per l'autenticazione. nel repository upstream.
- Non autenticato: per saltare l'autenticazione al repository upstream.
Facoltativo. Se hai selezionato Autenticato, inserisci quanto segue:
- Nel campo Nome utente, inserisci il tuo nome utente per l'upstream repository Git.
- Nel campo Secret, inserisci la versione del secret in cui hai salvato la password per il repository upstream.
Puoi modificare questi valori dopo aver creato il repository. Per maggiori informazioni informazioni sull'autenticazione negli upstream del repository remoto, consulta Configura l'autenticazione negli upstream del repository remoto.
Nella sezione 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 perché le descrizioni dei repository sono 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.
Se vuoi utilizzare criteri di pulizia per eliminare gli artefatti inutilizzati, nella Sezione Criteri di pulizia:
- Seleziona Prova per testare il criterio prima di applicarlo.
- Fai clic su Aggiungi criterio per aggiungere un criterio di conservazione o di eliminazione al repository.
- Assegna al criterio di pulizia un nome descrittivo nel campo Nome.
Nella sezione Tipo di criterio, seleziona una delle seguenti opzioni:
- Eliminazione condizionale: elimina gli artefatti in base alle condizioni impostate per definire.
- Conservazione condizionale: conserva gli artefatti in base alle condizioni che definisci.
Conserva le versioni più recenti: mantiene un numero specifico delle versioni più recenti o versioni successive per pacchetto.
Per maggiori dettagli sui criteri di pulizia, consulta Configura i criteri di pulizia.
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.
- Configura i repository remoti di Artifact Registry per l'autenticazione
le loro origini upstream.
- 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" \
--remote-username=USERNAME \
--remote-password-secret-version=SECRET_VERSION \
--remote-docker-repo=UPSTREAM
Sostituisci quanto segue:
REMOTE-REPOSITORY-NAME
con il nome del repository. Per per ogni posizione di repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, in uso il progetto corrente o predefinito.LOCATION
con una o più regioni location del repository. Puoi ometti 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 perché le descrizioni dei repository non sono criptato.REMOTE-REPOSITORY-DESCRIPTION
con una descrizione per la configurazione del repository esterno.USERNAME
in via facoltativa, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository a monte.SECRET_VERSION
in via facoltativa, se utilizzi l'autenticazione, con la versione del secret contenente la password del repository upstream.UPSTREAM
con il nome preimpostato o l'URL definito dall'utente della repository upstream. Per informazioni sugli upstream preimpostati disponibili upstream supportati definiti dall'utente, consulta Formati supportati.
Ad esempio, il comando seguente crea un repository remoto denominato
my-repo
nella regione us-east1
nel progetto Google Cloud
my-project
e può eseguire l'autenticazione nel repository a monte utilizzando
nome utente my-username
e versione del 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, vedi Configura 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" \
--remote-username=USERNAME \
--remote-password-secret-version=SECRET_VERSION \
--remote-mvn-repo=UPSTREAM
Sostituisci quanto segue:
REMOTE-REPOSITORY-NAME
con il nome del repository. Per per ogni posizione di repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, in uso il progetto corrente o predefinito.LOCATION
con una o più regioni location del repository. Puoi ometti 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 perché le descrizioni dei repository non sono criptato.REMOTE-REPOSITORY-DESCRIPTION
con una descrizione per la configurazione del repository esterno.USERNAME
in via facoltativa, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository a monte.SECRET_VERSION
in via facoltativa, se utilizzi l'autenticazione, con la versione del secret contenente la password del repository upstream.UPSTREAM
con il nome preimpostato o l'URL definito dall'utente della repository upstream. Per informazioni sugli upstream preimpostati disponibili upstream supportati definiti dall'utente, consulta Formati supportati.
Ad esempio, il comando seguente crea un repository remoto denominato
my-repo
nella regione us-east1
nel progetto Google Cloud
my-project
e può eseguire l'autenticazione nel repository a monte utilizzando
nome utente my-username
e versione del 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" \
--remote-username=USERNAME \
--remote-password-secret-version=SECRET_VERSION \
--remote-npm-repo=UPSTREAM
Sostituisci quanto segue:
REMOTE-REPOSITORY-NAME
con il nome del repository. Per per ogni posizione di repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, in uso il progetto corrente o predefinito.LOCATION
con una o più regioni location del repository. Puoi ometti 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 perché le descrizioni dei repository non sono criptato.REMOTE-REPOSITORY-DESCRIPTION
con una descrizione per la configurazione del repository esterno.USERNAME
in via facoltativa, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository a monte.SECRET_VERSION
in via facoltativa, se utilizzi l'autenticazione, con la versione del secret contenente la password del repository upstream.UPSTREAM
con il nome preimpostato o l'URL definito dall'utente della repository upstream. Per informazioni sugli upstream preimpostati disponibili upstream supportati definiti dall'utente, consulta Formati supportati.
Ad esempio, il comando seguente crea un repository remoto denominato
my-repo
nella regione us-east1
nel progetto Google Cloud
my-project
e può eseguire l'autenticazione nel repository a monte utilizzando
nome utente my-username
e versione del 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" \
--remote-username=USERNAME \
--remote-password-secret-version=SECRET_VERSION \
--remote-python-repo=UPSTREAM
Sostituisci quanto segue:
REMOTE-REPOSITORY-NAME
con il nome del repository. Per per ogni posizione di repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, in uso il progetto corrente o predefinito.LOCATION
con una o più regioni location del repository. Puoi ometti 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 perché le descrizioni dei repository non sono criptato.REMOTE-REPOSITORY-DESCRIPTION
con una descrizione per la configurazione del repository esterno.USERNAME
in via facoltativa, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository a monte.SECRET_VERSION
in via facoltativa, se utilizzi l'autenticazione, con la versione del secret contenente la password del repository upstream.UPSTREAM
con il nome preimpostato o l'URL definito dall'utente della repository upstream. Per informazioni sugli upstream preimpostati disponibili upstream supportati definiti dall'utente, consulta Formati supportati.
Ad esempio, il comando seguente crea un repository remoto denominato
my-repo
nella regione us-east1
nel progetto Google Cloud
my-project
e può eseguire l'autenticazione nel repository a monte utilizzando
nome utente my-username
e versione del 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 per ogni posizione di repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, in uso il progetto corrente o predefinito.LOCATION
con una o più regioni location del repository. Puoi ometti 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 perché le descrizioni dei repository non sono criptato.REMOTE_REPOSITORY_DESCRIPTION
con una descrizione facoltativa per la configurazione del repository esterno.APT_REPOSITORY_BASE
con uno dei repository supportati nomi base elencati nell'elenco Upstream supportati per i pacchetti del sistema operativo per Apt Remote repository.APT_REPOSITORY_PATH
con il resto dell'URL della che vuoi memorizzare nella cache nel repository remoto dopo alla base del repository.
Ad esempio, il comando seguente crea un repository remoto denominato
my-repo
per memorizzare nella cache il repository Debian del busting nella regione us-east1
in
il progetto Google Cloud my-project
. L'URL completo dell'upstream
il repository è 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"
Slurp (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 per ogni posizione di repository in un progetto, i nomi dei repository devono essere univoci.PROJECT_ID
con l'ID progetto. Se questo flag viene omesso, in uso il progetto corrente o predefinito.LOCATION
con una o più regioni location del repository. Puoi ometti 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 perché le descrizioni dei repository non sono criptato.REMOTE_REPOSITORY_DESCRIPTION
con una descrizione facoltativa per la configurazione del repository esterno.YUM_REPOSITORY_BASE
con uno dei repository supportati nomi base elencati nell'elenco Upstream supportati per il pacchetto del sistema operativo per Yum Remote repository.YUM_REPOSITORY_PATH
con il resto dell'URL della che vuoi memorizzare nella cache nel repository remoto dopo alla base del repository.
Ad esempio, il comando seguente crea un repository remoto per i pacchetti Yum
denominato my-repo
nella regione us-east1
nel progetto Google Cloud
my-project
per il repository upstream centos/8-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 \
--remote-yum-repo-path="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 REMOTE_REPOSITORY_NAME \
--location=LOCATION
Dopo aver creato il repository:
- Concedi l'accesso al repository.
- Configura i criteri di pulizia per eliminare gli artefatti inutilizzati.
- Configurare Docker, gestori di pacchetti e altri client di terze parti per eseguire l'autenticazione nei repository.
- Configura i repository remoti di Artifact Registry per l'autenticazione
le loro origini upstream.
- 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 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 e un repository remoto con
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 del progetto Google Cloud.LOCATION
è la posizione del repository.REPOSITORY_ID
è l'ID repository.DESCRIPTION
è la descrizione facoltativa del repository. Non includere dati sensibili, in quanto le descrizioni dei repository non è criptato.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, la crittografia gestita da Google chiave.CONFIG_DESCRIPTION
è la descrizione facoltativa del telecomando sorgente.DRY_RUN_STATUS
determina se i criteri di pulizia vengono eliminati artefatti o registra solo gli artefatti che verranno eliminati se l'impostazione di pulizia del repository. Ometti se non vuoi aggiungere i criteri di pulizia nel repository. *true
: consente di impostare i criteri per l'esecuzione in modalità dry run. Nessun artefatto è eliminati in modalità dry run. *false
: applica i criteri di pulizia. Gli artefatti vengono eliminati a seconda dei criteri. Per maggiori informazioni sui criteri di pulizia, consulta Configura i criteri di pulizia.POLICY_NAME
è il nome del criterio di pulizia.TAG_STATE
è lo stato del tag a cui applicare il criterio. Valori sonotagged
,untagged
eany
.any
si applica sia a tag che a artefatti senza tag. Se in un repository sono abilitati tag immutabili, gli artefatti non possono essere eliminati.TAG_PREFIX
,TAG_PREFIX_N
sono prefissi dei tag di per applicare il criterio.PKG_PREFIX
,PKG_PREFIX_N
sono prefissi del pacchetto a cui applicare il criterio.TIME_SINCE_UPLOAD
è il tempo trascorso dalla versione di un artefatto è stato caricato nel repository, specificato come durata. Puoi specificare durate di secondi, minuti, ore o giorni aggiungendos
,m
,h
, od
rispettivamente.KEEP_COUNT
è il numero di versioni per pacchetto di un artefatto in e mantenere nel repository.
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" {
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 del progetto Google Cloud.LOCATION
è la posizione del repository.REPOSITORY_ID
è l'ID repository.DESCRIPTION
è la descrizione facoltativa del repository. Non includere dati sensibili, in quanto le descrizioni dei repository non è criptato.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, la crittografia gestita da Google chiave.CONFIG_DESCRIPTION
è la descrizione facoltativa del telecomando sorgente.DRY_RUN_STATUS
determina se i criteri di pulizia vengono eliminati artefatti o registra solo gli artefatti che verranno eliminati se l'impostazione di pulizia del repository. Ometti se non vuoi aggiungere i criteri di pulizia nel repository. *true
: consente di impostare i criteri per l'esecuzione in modalità dry run. Nessun artefatto è eliminati in modalità dry run. *false
: applica i criteri di pulizia. Gli artefatti vengono eliminati a seconda dei criteri. Per maggiori informazioni sui criteri di pulizia, consulta Configura i criteri di pulizia.POLICY_NAME
è il nome del criterio di pulizia.TAG_STATE
è lo stato del tag a cui applicare il criterio. Valori sonotagged
,untagged
eany
.any
si applica sia a tag che a artefatti senza tag. Se in un repository sono abilitati tag immutabili, gli artefatti non possono essere eliminati.TAG_PREFIX
,TAG_PREFIX_N
sono prefissi dei tag di per applicare il criterio.PKG_PREFIX
,PKG_PREFIX_N
sono prefissi del pacchetto a cui applicare il criterio.TIME_SINCE_UPLOAD
è il tempo trascorso dalla versione di un artefatto è stato caricato nel repository, specificato come durata. Puoi specificare durate di secondi, minuti, ore o giorni aggiungendos
,m
,h
, od
rispettivamente.KEEP_COUNT
è il numero di versioni per pacchetto di un artefatto in e mantenere nel repository.
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 = "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 del progetto Google Cloud.LOCATION
è la posizione del repository.REPOSITORY_ID
è l'ID repository.DESCRIPTION
è la descrizione facoltativa del repository. Non includere dati sensibili, in quanto le descrizioni dei repository non è criptato.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, la crittografia gestita da Google chiave.CONFIG_DESCRIPTION
è la descrizione facoltativa del telecomando sorgente.DRY_RUN_STATUS
determina se i criteri di pulizia vengono eliminati artefatti o registra solo gli artefatti che verranno eliminati se l'impostazione di pulizia del repository. Ometti se non vuoi aggiungere i criteri di pulizia nel repository. *true
: consente di impostare i criteri per l'esecuzione in modalità dry run. Nessun artefatto è eliminati in modalità dry run. *false
: applica i criteri di pulizia. Gli artefatti vengono eliminati a seconda dei criteri. Per maggiori informazioni sui criteri di pulizia, consulta Configura i criteri di pulizia.POLICY_NAME
è il nome del criterio di pulizia.TAG_STATE
è lo stato del tag a cui applicare il criterio. Valori sonotagged
,untagged
eany
.any
si applica sia a tag che a artefatti senza tag. Se in un repository sono abilitati tag immutabili, gli artefatti non possono essere eliminati.TAG_PREFIX
,TAG_PREFIX_N
sono prefissi dei tag di per applicare il criterio.PKG_PREFIX
,PKG_PREFIX_N
sono prefissi del pacchetto a cui applicare il criterio.TIME_SINCE_UPLOAD
è il tempo trascorso dalla versione di un artefatto è stato caricato nel repository, specificato come durata. Puoi specificare durate di secondi, minuti, ore o giorni aggiungendos
,m
,h
, od
rispettivamente.KEEP_COUNT
è il numero di versioni per pacchetto di un artefatto in e mantenere 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 del progetto Google Cloud.LOCATION
è la posizione del repository.REPOSITORY_ID
è l'ID repository.DESCRIPTION
è la descrizione facoltativa del repository. Non includere dati sensibili, in quanto le descrizioni dei repository non è criptato.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, la crittografia gestita da Google chiave.CONFIG_DESCRIPTION
è la descrizione facoltativa del telecomando sorgente.DRY_RUN_STATUS
determina se i criteri di pulizia vengono eliminati artefatti o registra solo gli artefatti che verranno eliminati se l'impostazione di pulizia del repository. Ometti se non vuoi aggiungere i criteri di pulizia nel repository. *true
: consente di impostare i criteri per l'esecuzione in modalità dry run. Nessun artefatto è eliminati in modalità dry run. *false
: applica i criteri di pulizia. Gli artefatti vengono eliminati a seconda dei criteri. Per maggiori informazioni sui criteri di pulizia, consulta Configura i criteri di pulizia.POLICY_NAME
è il nome del criterio di pulizia.TAG_STATE
è lo stato del tag a cui applicare il criterio. Valori sonotagged
,untagged
eany
.any
si applica sia a tag che a artefatti senza tag. Se in un repository sono abilitati tag immutabili, gli artefatti non possono essere eliminati.TAG_PREFIX
,TAG_PREFIX_N
sono prefissi dei tag di per applicare il criterio.PKG_PREFIX
,PKG_PREFIX_N
sono prefissi del pacchetto a cui applicare il criterio.TIME_SINCE_UPLOAD
è il tempo trascorso dalla versione di un artefatto è stato caricato nel repository, specificato come durata. Puoi specificare durate di secondi, minuti, ore o giorni aggiungendos
,m
,h
, od
rispettivamente.KEEP_COUNT
è il numero di versioni per pacchetto di un artefatto in e mantenere nel repository.
Appartamento (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 del progetto Google Cloud.
- LOCATION è la località del repository.
- REPOSITORY_ID è l'ID repository.
- DESCRIPTION è la descrizione facoltativa del repository. Non includere dati sensibili perché le descrizioni dei repository sono non è criptato.
- CONFIG_DESCRIPTION è la descrizione facoltativa del telecomando sorgente.
- REPOSITORY_BASE è la base preimpostata del repository pubblico per Apt.
I valori possibili sono
DEBIAN
eUBUNTU
. - REPOSITORY_PATH è il repository specifico della base. Per
esempio
debian/dists/buster
.
Slurp (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 del progetto Google Cloud.
- LOCATION è la località del repository.
- REPOSITORY_ID è l'ID repository.
- DESCRIPTION è la descrizione facoltativa del repository. Non includere dati sensibili perché le descrizioni dei repository sono non è criptato.
- CONFIG_DESCRIPTION è la descrizione facoltativa del telecomando sorgente.
- REPOSITORY_BASE è la base di 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. Per
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.
- Configurare Docker, gestori di pacchetti e altri client di terze parti per eseguire l'autenticazione nei repository.
- Configura i repository remoti di Artifact Registry per l'autenticazione
le loro origini upstream.
- 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
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, selezionalo 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 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.
Accesso alle origini upstream in un perimetro di servizio
I servizi in un perimetro di servizio Controlli di servizio VPC sono soggetti a restrizioni alle risorse al di fuori del perimetro.
Puoi consentire o negare l'accesso alle origini upstream all'interno di un dal progetto Google Cloud e dalla località.
Per impostazione predefinita, Artifact Registry nega l'accesso alle origini upstream se non hanno concesso esplicitamente l'accesso.
Per Artifact Registry, il ruolo richiesto è Amministratore Artifact Registry
(roles/artifactregistry.admin
).
Visualizza le impostazioni per le origini upstream
Per visualizzare la configurazione per una combinazione specifica di progetto e località: esegui questo comando:
gcloud artifacts vpcsc-config describe \
--project=PROJECT_ID \
--location=LOCATION
Ad esempio, usa il comando seguente per visualizzare le impostazioni per i repository remoti
in us-east1
nel progetto my-project
:
gcloud artifacts vpcsc-config describe \
--project=my-project \
--location=us-east1
Consenti l'accesso a origini upstream
Per consentire l'accesso alle origini upstream in una località specificata, esegui questo comando:
gcloud artifacts vpcsc-config allow \
--project=PROJECT_ID \
--location=LOCATION
Ad esempio, usa il comando seguente per consentire tutti i repository remoti
us-east1
nel progetto my-project
per accedere alle origini upstream all'esterno
del perimetro:
gcloud artifacts vpcsc-config allow \
--project=my-project \
--location=us-east1
Nega l'accesso alle origini upstream
Quando neghi l'accesso alle origini upstream, gli artefatti esistenti memorizzati nella cache sono ancora disponibili.
Per negare l'accesso alle origini upstream in una località specificata, esegui questo comando:
gcloud artifacts vpcsc-config deny \
--project=PROJECT_ID \
--location=LOCATION
Ad esempio, usa il comando seguente per bloccare l'accesso alle origini upstream
fuori dal 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 di Docker Hub.
- Scopri di più sui repository remoti di Artifact Registry.
- Configura l'autenticazione del repository remoto in Docker Hub.