Crea repository remoti

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 nonché origini definite dall'utente per i formati supportati. Un repository remoto agisce da proxy per l'origine esterna, in modo da avere un maggiore controllo sulle dipendenze esterne. La prima volta che richiedi una versione di un pacchetto, Artifact Registry scarica e memorizza nella cache il pacchetto nel repository remoto. La volta successiva che richiedi la stessa versione del pacchetto, Artifact Registry pubblica la copia memorizzata nella cache.

Le altre modalità di repository sono:

  • Standard: la modalità di repository predefinita. Puoi caricare o pubblicare artefatti come i 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 la configurazione degli strumenti.
  • Virtuale: un repository che funge da singolo punto di accesso per più repository upstream, inclusi repository remoti e standard.

Per maggiori dettagli sul funzionamento dei repository remoti, consulta la Panoramica dei repository remoti.

Prima di iniziare

  1. Abilita Artifact Registry, incluse l'abilitazione dell'API Artifact Registry e l'installazione di Google Cloud CLI.
  2. (Facoltativo) Configura i valori predefiniti per i comandi gcloud CLI.
  3. 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.
  4. Se vuoi eseguire l'autenticazione in un repository upstream, abilita l'API Secret Manager.

    gcloud services enable secretmanager.googleapis.com \
        --project=PROJECT_ID
    
  5. Se Artifact Registry si trova in un perimetro di servizio Controlli di servizio VPC, abilita 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 i seguenti ruoli IAM:

  • Crea repository remoti e concedi l'accesso a singoli repository: Artifact Registry Admin (roles/artifactregistry.admin) nel progetto
  • Salva le credenziali del repository upstream in una versione del secret: Amministratore Secret Manager (roles/secretmanager.admin) nel 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 i ruoli personalizzati o altri ruoli predefiniti.

Crea un repository remoto

Quando crei un repository remoto, devi configurare le impostazioni seguenti, che non possono essere modificate 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 o chiavi di crittografia gestite dal cliente. Artifact Registry utilizza le chiavi di crittografia di proprietà 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 chiavi Cloud KMS utilizzabili per la protezione CMEK.

Crea un repository remoto utilizzando la console Google Cloud

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Fai clic su Crea repository.

  3. Specifica il nome del repository. Per ogni posizione del repository in un progetto, i nomi dei repository devono essere univoci.

  4. Nella sezione Formato, seleziona il formato del repository.

  5. Nella sezione Modalità repository, seleziona Remoto.

  6. Nella sezione Origine repository remoto, seleziona upstream preimpostato o Personalizzato se vuoi utilizzare un URL definito dall'utente per l'upstream.

  7. Facoltativo. Se utilizzi un upstream personalizzato, inserisci l'URL del repository personalizzato nel campo Repository personalizzato. L'URL non può essere modificato dopo la creazione del repository.

  8. In Modalità di autenticazione del repository remoto, scegli una delle seguenti opzioni:

    • Autenticato: per inserire nome utente e secret per l'autenticazione nel repository upstream.
    • Non autenticato: per saltare l'autenticazione al repository upstream.
  9. Facoltativo. 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 upstream.

    Puoi modificare questi valori dopo aver creato il repository. Per ulteriori informazioni sull'autenticazione negli upstream del repository remoto, consulta Configurare l'autenticazione negli upstream del repository remoto.

  10. Nella sezione Tipo di località, scegli la località del repository:

    1. Scegli il tipo di località: Regione o Più regioni. L'elenco delle località cambia in base alla selezione.

    2. Nell'elenco Regione o Più regioni, seleziona una località.

    Per informazioni sui tipi di località e sulle località supportate, consulta Località dei repository

  11. 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, poiché le descrizioni dei repository non sono criptate.

  12. Se vuoi utilizzare le etichette per organizzare i 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.

  13. 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 puoi controllare tramite Cloud Key Management Service. Per istruzioni sulla configurazione delle chiavi, consulta Configurazione di CMEK per i repository.
  14. Se vuoi utilizzare i criteri di pulizia per eliminare gli artefatti inutilizzati, nella sezione Criteri di pulizia:

    1. Seleziona Prova per testare il criterio prima di applicarlo.
    2. Fai clic su Aggiungi criterio per aggiungere un criterio di conservazione o di eliminazione al repository.
    3. Assegna al criterio di pulizia un nome descrittivo nel campo Nome.
    4. Nella sezione Tipo di criterio, seleziona una delle seguenti opzioni:

      • Eliminazione condizionale: elimina gli artefatti in base alle condizioni definite.
      • Conservazione condizionale: conserva gli artefatti in base alle condizioni che definisci.
      • Conserva le versioni più recenti: mantiene un numero specifico di versioni più recenti per pacchetto.

      Per maggiori dettagli sui criteri di pulizia, consulta Configurare i criteri di pulizia.

  15. Fai clic su Crea.

Artifact Registry crea il repository e lo aggiunge all'elenco dei repository.

Dopo aver creato il repository:

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 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 usato il progetto attuale o predefinito.
  • LOCATION con la località a livello di una o più regioni per il repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comando gcloud 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 per la configurazione del repository esterno per questo repository remoto.

  • USERNAME, in via facoltativa, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository a monte.

  • SECRET_VERSION facoltativamente, 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 del repository upstream. Per informazioni sugli upstream preimpostati disponibili e su quelli supportati 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 il nome utente my-username e la 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, consulta la pagina 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" \
    --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 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 usato il progetto attuale o predefinito.
  • LOCATION con la località a livello di una o più regioni per il repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comando gcloud 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 per la configurazione del repository esterno per questo repository remoto.

  • USERNAME, in via facoltativa, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository a monte.

  • SECRET_VERSION facoltativamente, 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 del repository upstream. Per informazioni sugli upstream preimpostati disponibili e su quelli supportati 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 il nome utente my-username e la 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 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 usato il progetto attuale o predefinito.
  • LOCATION con la località a livello di una o più regioni per il repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comando gcloud 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 per la configurazione del repository esterno per questo repository remoto.

  • USERNAME, in via facoltativa, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository a monte.

  • SECRET_VERSION facoltativamente, 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 del repository upstream. Per informazioni sugli upstream preimpostati disponibili e su quelli supportati 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 il nome utente my-username e la 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 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 usato il progetto attuale o predefinito.
  • LOCATION con la località a livello di una o più regioni per il repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comando gcloud 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 per la configurazione del repository esterno per questo repository remoto.

  • USERNAME, in via facoltativa, se utilizzi l'autenticazione, con il tuo nome utente per l'autenticazione nel repository a monte.

  • SECRET_VERSION facoltativamente, 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 del repository upstream. Per informazioni sugli upstream preimpostati disponibili e su quelli supportati 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 il nome utente my-username e la 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 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 usato il progetto attuale o predefinito.
  • LOCATION con la località a livello di una o più regioni per il repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comando gcloud 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 dei repository supportati elencati negli upstream supportati per i pacchetti del sistema operativo per i repository remoti Apt.
  • APT_REPOSITORY_PATH con il resto dell'URL del repository upstream che vuoi memorizzare nella cache nel repository remoto dopo la base del repository.

Ad esempio, il comando seguente crea un repository remoto denominato my-repo per memorizzare nella cache il repository del busting di Debian 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"

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 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 usato il progetto attuale o predefinito.
  • LOCATION con la località a livello di una o più regioni per il repository. Puoi omettere questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui il comando gcloud 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 per i pacchetti del sistema operativo per i repository remoti Yum.
  • YUM_REPOSITORY_PATH con il resto dell'URL del repository upstream 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 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:

Crea un repository remoto con Terraform

Utilizza la risorsa google_artifact_registry_repository per creare repository. È richiesta la versione terraform-provider-google 5.0.0 o successiva.

Se è la prima volta che utilizzi Terraform per Google Cloud, consulta la pagina Get Started - Google Cloud (Inizia) - 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 del 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 le chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita, ovvero le chiavi di crittografia gestite da Google.
  • CONFIG_DESCRIPTIONè la descrizione facoltativa della sorgente remota.
  • DRY_RUN_STATUS determina se i criteri di pulizia eliminano gli artefatti o registrano solo gli artefatti che verranno eliminati se si impostano criteri di pulizia nel repository. Ometti se non vuoi aggiungere criteri di pulizia al repository. * true: consente di impostare i criteri per l'esecuzione in modalità dry run. Nessun artefatto viene eliminato in modalità dry run. * false: applica i criteri di pulizia. Gli artefatti vengono eliminati o conservati a seconda dei criteri. Per maggiori 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 sono tagged, untagged e any. any si applica agli artefatti sia con tag sia senza tag. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono essere eliminati.
    • TAG_PREFIX, TAG_PREFIX_N sono prefissi di tag a cui applicare il criterio.
    • PKG_PREFIX, PKG_PREFIX_N sono prefissi dei pacchetti a cui applicare il criterio.
    • TIME_SINCE_UPLOAD è il tempo trascorso da quando la versione dell'artefatto è stata caricata nel repository, specificata come durata. Puoi specificare durata in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
    • KEEP_COUNT è il numero di versioni per pacchetto di un artefatto da conservare nel repository.

Maven

Se non specifichi un criterio di versione, Artifact Registry crea un repository Maven che archivia per impostazione predefinita sia le versioni snapshot che quelle di rilascio 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 del 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 le chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita, ovvero le chiavi di crittografia gestite da Google.
  • CONFIG_DESCRIPTIONè la descrizione facoltativa della sorgente remota.
  • DRY_RUN_STATUS determina se i criteri di pulizia eliminano gli artefatti o registrano solo gli artefatti che verranno eliminati se si impostano criteri di pulizia nel repository. Ometti se non vuoi aggiungere criteri di pulizia al repository. * true: consente di impostare i criteri per l'esecuzione in modalità dry run. Nessun artefatto viene eliminato in modalità dry run. * false: applica i criteri di pulizia. Gli artefatti vengono eliminati o conservati a seconda dei criteri. Per maggiori 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 sono tagged, untagged e any. any si applica agli artefatti sia con tag sia senza tag. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono essere eliminati.
    • TAG_PREFIX, TAG_PREFIX_N sono prefissi di tag a cui applicare il criterio.
    • PKG_PREFIX, PKG_PREFIX_N sono prefissi dei pacchetti a cui applicare il criterio.
    • TIME_SINCE_UPLOAD è il tempo trascorso da quando la versione dell'artefatto è stata caricata nel repository, specificata come durata. Puoi specificare durata in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
    • KEEP_COUNT è il numero di versioni per pacchetto di un artefatto da conservare nel repository.

Per archiviare le versioni degli snapshot e delle release 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 pacchetti di snapshot e release. Questa è l'impostazione predefinita.
    • LANCIO: soltanto pacchetti release dello store.
    • SNAPSHOT: archivia solo i pacchetti di snapshot.
  • allow_snapshot_overwrites configura un repository con un criterio di versione SNAPSHOT per accettare snapshot non univoci che sovrascrivono le versioni esistenti nel repository.

L'esempio seguente definisce un Repository Maven con un criterio per la 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, poiché le descrizioni dei repository non sono criptate.
  • KEYè il nome della chiave Cloud Key Management Service, se utilizzi le chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita, ovvero le chiavi di crittografia gestite da Google.
  • CONFIG_DESCRIPTIONè la descrizione facoltativa della sorgente remota.
  • DRY_RUN_STATUS determina se i criteri di pulizia eliminano gli artefatti o registrano solo gli artefatti che verranno eliminati se si impostano criteri di pulizia nel repository. Ometti se non vuoi aggiungere criteri di pulizia al repository. * true: consente di impostare i criteri per l'esecuzione in modalità dry run. Nessun artefatto viene eliminato in modalità dry run. * false: applica i criteri di pulizia. Gli artefatti vengono eliminati o conservati a seconda dei criteri. Per maggiori 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 sono tagged, untagged e any. any si applica agli artefatti sia con tag sia senza tag. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono essere eliminati.
    • TAG_PREFIX, TAG_PREFIX_N sono prefissi di tag a cui applicare il criterio.
    • PKG_PREFIX, PKG_PREFIX_N sono prefissi dei pacchetti a cui applicare il criterio.
    • TIME_SINCE_UPLOAD è il tempo trascorso da quando la versione dell'artefatto è stata caricata nel repository, specificata come durata. Puoi specificare durata in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
    • 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 del 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 le chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita, ovvero le chiavi di crittografia gestite da Google.
  • CONFIG_DESCRIPTIONè la descrizione facoltativa della sorgente remota.
  • DRY_RUN_STATUS determina se i criteri di pulizia eliminano gli artefatti o registrano solo gli artefatti che verranno eliminati se si impostano criteri di pulizia nel repository. Ometti se non vuoi aggiungere criteri di pulizia al repository. * true: consente di impostare i criteri per l'esecuzione in modalità dry run. Nessun artefatto viene eliminato in modalità dry run. * false: applica i criteri di pulizia. Gli artefatti vengono eliminati o conservati a seconda dei criteri. Per maggiori 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 sono tagged, untagged e any. any si applica agli artefatti sia con tag sia senza tag. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono essere eliminati.
    • TAG_PREFIX, TAG_PREFIX_N sono prefissi di tag a cui applicare il criterio.
    • PKG_PREFIX, PKG_PREFIX_N sono prefissi dei pacchetti a cui applicare il criterio.
    • TIME_SINCE_UPLOAD è il tempo trascorso da quando la versione dell'artefatto è stata caricata nel repository, specificata come durata. Puoi specificare durata in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
    • KEEP_COUNT è il numero di versioni per pacchetto di un artefatto da conservare 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, poiché le descrizioni dei repository non sono criptate.
  • CONFIG_DESCRIPTION è la descrizione facoltativa della sorgente remota.
  • REPOSITORY_BASE è la base preimpostata del repository pubblico per Apt. I valori possibili sono DEBIAN e UBUNTU.
  • REPOSITORY_PATH è il repository specifico della base. Ad 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, poiché le descrizioni dei repository non sono criptate.
  • CONFIG_DESCRIPTION è la descrizione facoltativa della sorgente remota.
  • REPOSITORY_BASE è la base di repository pubblico preimpostata per Yum. I valori possibili sono CENTOS, CENTOS_DEBUG, CENTOS_VAULT, CENTOS_STREAM, ROCKY e EPEL.
  • 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:

Modifica descrizioni repository

Puoi modificare la descrizione del repository dalla console Google Cloud o da gcloud CLI.

Console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. 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 un repository predefinito, puoi omettere questo flag per utilizzare il repository predefinito.
  • PROJECT: l'ID del progetto Google Cloud. Se questo flag viene omesso, viene usato il progetto attuale o predefinito.
  • LOCATION: una località a livello di una o più regioni località. Utilizza questo flag per visualizzare i repository in una posizione specifica. Se hai configurato una località predefinita, puoi omettere questo flag per utilizzare la località predefinita.
  • 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 hanno accesso limitato alle risorse all'esterno del perimetro.

Puoi consentire o negare l'accesso alle origini upstream all'interno di un progetto Google Cloud e di una località specificati.

Per impostazione predefinita, Artifact Registry nega l'accesso alle origini upstream se non hai concesso esplicitamente l'accesso.

Per Artifact Registry, il ruolo richiesto è Amministratore di 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, utilizza il comando seguente per consentire a tutti i repository remoti in us-east1 del progetto my-project di accedere alle relative 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 nei repository remoti 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 seguente comando per bloccare l'accesso alle origini upstream 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