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 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

  1. Abilita Artifact Registry, tra cui 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 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.
  4. Se vuoi eseguire l'autenticazione in un repository upstream, abilita il 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, 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 a progetti, cartelle e organizzazioni.

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.
  • La modalità del 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

  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 Remote.

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

  7. Facoltativo. Se utilizzi un upstream personalizzato, nel Repository personalizzato inserisci l'URL del 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 il tuo nome utente e il tuo 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 l'upstream repository Git.
    • Nel campo Secret, inserisci la versione del secret in cui hai salvato per il repository upstream.

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

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

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

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

    Per informazioni sui tipi di località e sulle località supportate, vedi 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 perché le descrizioni dei repository sono non è criptato.

  12. 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 repository Git.

  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à di Google e gestita da Google.
    • Chiave gestita dal cliente: cripta i contenuti del repository con una chiave che controlli tramite Cloud Key Management Service. Per istruzioni sulla configurazione della chiave, consulta Configurazione di CMEK per i repository.
  14. Se vuoi utilizzare i criteri di pulizia per eliminare gli elementi 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 impostate 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.

  15. Fai clic su Crea.

Artifact Registry crea il repository e lo aggiunge all'elenco di 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 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 quello 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 comando gcloud 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 e su quelli definiti dall'utente supportati, 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, 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 comando gcloud 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 e su quelli definiti dall'utente supportati, consulta Formati supportati.

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" \
    --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 quello predefinito.
  • LOCATION con una o più regioni location del 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 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 quello predefinito.
  • LOCATION con una o più regioni location del 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 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 quello 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 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.
  • APT_REPOSITORY_BASE con uno dei repository supportati i nomi base elencati 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 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 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 quello 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 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 repository supportati i nomi base elencati Upstream supportati per il pacchetto del sistema operativo per Yum Remote repository.
  • 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 centos/8-stream/BaseOs/x86_64/os a monte.

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:

Creare un repository remoto utilizzando Terraform

Usa 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 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. Omit 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. I valori sono tagged, untagged e any. 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 aggiungendo s, m, h, o d 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. Omit 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 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 sono tagged, untagged e any. 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 aggiungendo s, m, h, o d 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 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 un SNAPSHOT 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. Omit 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 criteri di pulizia al 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 elementi vengono eliminati o conservati in base ai 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. I valori sono tagged, untagged e any. 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 aggiungendo s, m, h, o d rispettivamente.
    • 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, 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. Omit 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: imposta i criteri da eseguire in modalità di prova. 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. I valori sono tagged, untagged e any. 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 aggiungendo s, m, h, o d 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 e UBUNTU.
  • REPOSITORY_PATH è il repository specifico della base. Per 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 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 e EPEL.
  • 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:

Modifica descrizioni repository

Puoi modificare la descrizione del repository dalla console Google Cloud oppure dal con 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 predefinito, puoi omettere questo flag per usare il valore predefinito.
  • PROJECT: l'ID del progetto Google Cloud. Se questo flag viene omesso, viene utilizzato il progetto corrente o predefinito.
  • LOCATION: un una o più regioni località. 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 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).

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, 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 a monte in una posizione specificata, esegui il 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 a monte in una posizione specificata, esegui il 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