crea repository virtuali

Questa pagina descrive come creare un'istanza virtuale Artifact Registry repository.

I repository virtuali fungono da unico punto di accesso da scaricare, installare il deployment degli artefatti nello stesso formato da uno o più repository upstream. Il repository upstream può essere uno standard Artifact Registry o repository Git.

Le altre modalità di repository sono:

  • Standard: la modalità di repository predefinita. Carichi o pubblichi come pacchetti privati direttamente nei repository standard. Sebbene sia possibile scaricare direttamente da singoli repository standard, l'accesso a gruppi di repository con un repository virtuale semplifica della configurazione dello strumento.
  • Remote (solo repository di pacchetti di lingua): un pull-through per gli artefatti in repository pubblici come Maven Central o PyPI. Agisce da proxy per i repository pubblici in modo che tu abbia un maggiore controllo sulle dipendenze esterne.

Per ulteriori informazioni su come funzionano i repository virtuali, consulta Panoramica del repository virtuale.

Prima di iniziare

Abilita Artifact Registry, inclusa l'abilitazione dell'API Artifact Registry installando l'ultima versione di Google Cloud CLI.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire i repository, chiedi all'amministratore di concederti seguenti ruoli IAM:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

Se i repository upstream si trovano in altri progetti, un amministratore i progetti con repository upstream devono avere le autorizzazioni per gestire l'accesso ai repository.

Crea repository upstream

Prima di configurare un repository virtuale, crea i repository upstream che che vuoi rendere disponibile con il repository virtuale.

  1. Crea i repository upstream nello stesso account Google Cloud regione in cui prevedi di creare il repository virtuale.

  2. I repository virtuali utilizzano l'agente di servizio Artifact Registry per l'autenticazione nei repository upstream. Devi concedere il servizio l'accesso in lettura dell'agente ai repository upstream.

    Puoi concedere il ruolo Lettore Artifact Registry alla Agente di servizio Artifact Registry nel progetto senza dover concedere l'accesso a singoli upstream repository.

    In ogni progetto con repository upstream, esegui questo comando:

    gcloud projects add-iam-policy-binding UPSTREAM_PROJECT_ID \
        --member serviceAccount:service-VIRTUAL-REPO-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \
        --role roles/artifactregistry.reader
    

    Dove

    • UPSTREAM_PROJECT_ID è l'ID del progetto Google Cloud con il repository upstream.
    • VIRTUAL_REPO_PROJECT_NUMBER è il numero di progetto del progetto Google Cloud per nel tuo repository virtuale.

    In alternativa, se vuoi concedere al servizio un ruolo con ambito più limitato agente, aggiungi l'autorizzazione artifactregistry.repositories.readViaVirtualRepository a un ruolo personalizzato e assegnare il ruolo all'agente di servizio.

    Per ulteriori informazioni sulla concessione delle autorizzazioni, consulta documentazione sul controllo dell'accesso.

Crea un repository virtuale

Quando crei un repository, devi configurare le seguenti impostazioni che non può essere modificato dopo la creazione del repository:

  • Formato artefatto.
  • Modalità repository, se sono disponibili più modalità per il formato selezionato.
  • Posizione del repository.
  • Crittografia con chiavi di proprietà e gestite da Google chiavi di crittografia gestite dal cliente. Artifact Registry utilizza Chiavi di proprietà di Google e gestite da Google per impostazione predefinita.

Artifact Registry applica i vincoli dei criteri dell'organizzazione che richiedono una CMEK per criptare le risorse o limitare le risorse di Cloud KMS per la protezione CMEK.

Crea un repository virtuale utilizzando la console Google Cloud

  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. Seleziona il formato del repository.

  5. In Modalità repository, seleziona Virtuale.

  6. In Upstream del repository virtuale, fai clic su Aggiungi upstream per aggiungerlo un repository upstream.

    • Un repository a monte può essere un repository standard, remoto o virtuale.
    • Un repository upstream deve trovarsi nella stessa località ma può trovarsi in un altro progetto Google Cloud.
    • Un repository upstream deve essere lo stesso formato dell'artefatto del repository repository Git.

    Specificare una priorità e un nome del criterio per ogni upstream repository Git. I valori con priorità più alta hanno la precedenza sui valori più bassi. Lascia spazio tra i valori di priorità per aumentare la flessibilità dell'aggiunta repository a monte con priorità che si trovano tra i valori esistenti.

  7. In Tipo di località, scegli la località 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

  8. Aggiungi una descrizione per il repository. Le descrizioni aiutano a identificare lo scopo del repository e il tipo di artefatti che contiene.

    Non includere dati sensibili, in quanto le descrizioni dei repository non è criptato.

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

  10. 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.
  11. Fai clic su Crea.

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

Dopo aver creato il repository:

Crea un repository virtuale utilizzando gcloud CLI

Per creare un repository virtuale, definisci i repository upstream in una dei criteri e poi creare il repository utilizzando il file dei criteri.

  1. Crea un file dei criteri upstream in formato JSON con le seguenti impostazioni:

    [{
    "id" : "POLICY_ID",
    "repository" : "UPSTREAM_REPOSITORY_RESOURCE_NAME",
    "priority" : PRIORITY
    }, {...}]
    
    • POLICY_ID è un nome per il criterio. Ogni upstream il repository nel criterio deve avere un ID criterio univoco.
    • UPSTREAM_REPO_RESOURCE_NAME è il nome dell'upstream repository nel formato:

      projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY
      
      • Un repository a monte può essere un repository standard, remoto o virtuale.
      • Un repository upstream deve trovarsi nella stessa località ma può trovarsi in un altro progetto Google Cloud.
      • Un repository upstream deve essere lo stesso formato dell'artefatto del repository repository Git.
    • PRIORITY è un numero intero che indica il priorità per il repository upstream. Priorità più elevata i valori hanno la precedenza sui valori inferiori.

    L'esempio seguente mostra un file di criteri denominato policies.json con quattro repository upstream. upstream1 è il valore più alto per priority, quindi Artifact Registry lo cercherà prima. upstream-test ha il valore priority più basso, quindi Artifact Registry eseguirà la ricerca per ultimo. upstream2 e upstream3 hanno la stessa priorità. Se Artifact Registry trova un pacchetto richiesto nei repository con la stessa priorità, può gestire il pacchetto da entrambi i repository.

    [{
    "id" : "upstream1",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-repo1",
    "priority" : 100
    }, {
    "id" : "upstream2",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-repo2",
    "priority" : 80
    }, {
    "id" : "upstream3",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-repo2",
    "priority" : 80
    }, {
    "id" : "upstream-test",
    "repository" : "projects/myproject/locations/us-west1/repositories/python-test-repo",
    "priority" : 20
    }]
    

    Questo esempio lascia anche uno spazio tra i valori di priorità. Queste lacune offrono la flessibilità di aggiungere repository a monte con priorità in tra i valori esistenti. Ad esempio, puoi aggiungere upstream-3 repository con priorità 70, così Artifact Registry cerca prima del giorno upstream-test.

    Valuta la possibilità di archiviare il file dei criteri upstream nel tuo sistema di controllo del codice sorgente in modo che che puoi riutilizzare in un secondo momento per apportare modifiche alle impostazioni del repository upstream e monitorare le modifiche storiche.

  2. Nella directory in cui si trova il file dei criteri upstream, esegui questo comando per creare il repository virtuale:

    gcloud artifacts repositories create VIRTUAL-REPOSITORY-NAME \
        --project=PROJECT_ID \
        --repository-format=FORMAT \
        --mode=virtual-repository \
        --location=LOCATION \
        --description="DESCRIPTION" \
        --upstream-policy-file=UPSTREAM_POLICY_FILE
    

    Sostituisci quanto segue:

    • VIRTUAL-REPOSITORY-NAME è il nome del virtuale repository Git.
    • PROJECT_ID è l'ID del progetto in cui ti trovi creando il repository virtuale. Se questo flag viene omesso, il valore predefinito o predefinito.
    • FORMAT è il formato del repository. Le seguenti sono disponibili i seguenti valori:
      • apt (anteprima privata)
      • docker
      • maven
      • npm
      • python
      • yum (anteprima privata)
    • LOCATION indica una o più regioni location del repository. Puoi ometti questo flag se imposti un valore default. Per visualizzare un elenco delle località supportate, esegui questo comando:

      gcloud artifacts locations list
      
    • DESCRIPTION è una descrizione facoltativa del repository. Non includere dati sensibili perché le descrizioni dei repository non sono criptato.

    • UPSTREAM_POLICY_FILE è un percorso del criterio upstream .

    Ad esempio, il comando seguente crea un repository virtuale denominato virtual-repo per i pacchetti Python nella regione us-west1 con impostazioni in policies.json.

    gcloud artifacts repositories create virtual-repo \
    --repository-format=python \
    --mode=virtual-repository \
    --location=us-west1 \
    --description="Python virtual repository" \
    --upstream-policy-file=policies.json
    

Artifact Registry crea il repository virtuale.

Crea un repository virtuale con Terraform

Usa la risorsa google_artifact_registry_repository per creare repository. Versione terraform-provider-google È obbligatorio almeno 5.0.0.

Se non hai mai utilizzato Terraform per Google Cloud, consulta Inizia - Google Cloud nella Sito web di HashiCorp.

L'esempio seguente definisce il provider, un repository virtuale con Nome della risorsa Terraform my-repo e repository upstream con la risorsa Terraform nome risorsa my-repo-upstream.

Docker

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "docker"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "docker"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

Dove

  • PROJECT-ID è l'ID del progetto Google Cloud.
  • UPSTREAM_LOCATION è la località del repository upstream. Tieni presente che il repository virtuale e l'upstream devono trovarsi nella stessa regione o in più regioni.
  • UPSTREAM_REPOSITORY_ID è l'ID del repository upstream.
  • UPSTREAM_REPOSITORY_DESCRIPTION è la descrizione facoltativa del repository a monte.
  • LOCATION è la località del repository virtuale.
  • REPOSITORY_ID è l'ID del repository virtuale.
  • DESCRIPTION è la descrizione facoltativa per l'istanza virtuale repository Git. Non includere dati sensibili, in quanto le descrizioni dei repository non sono crittografati.
  • KEY è il nome della chiave di Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita: chiavi di proprietà di Google e gestite da Google.
  • PRIORITY è il valore di priorità facoltativo. La priorità più alta è 1. Le voci con un valore di priorità maggiore hanno la precedenza nel pull ordine.

Maven

Se non specifichi un criterio di versione, Artifact Registry crea un Repository Maven in cui sono archiviati snapshot e release dei pacchetti per impostazione predefinita.

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "maven"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "maven"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

Dove

  • PROJECT-ID è l'ID del progetto Google Cloud.
  • UPSTREAM_LOCATION è la località del repository upstream. Tieni presente che il repository virtuale e l'upstream devono trovarsi nella stessa regione o in più regioni.
  • UPSTREAM_REPOSITORY_ID è l'ID del repository upstream.
  • UPSTREAM_REPOSITORY_DESCRIPTION è la descrizione facoltativa del repository a monte.
  • LOCATION è la località del repository virtuale.
  • REPOSITORY_ID è l'ID del repository virtuale.
  • DESCRIPTION è la descrizione facoltativa per l'istanza virtuale repository Git. Non includere dati sensibili, in quanto le descrizioni dei repository non sono crittografati.
  • KEY è il nome della chiave di Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita: chiavi di proprietà di Google e gestite da Google.
  • PRIORITY è il valore di priorità facoltativo. La priorità più alta è 1. Le voci con un valore di priorità maggiore hanno la precedenza nel pull ordine.

Per archiviare versioni di snapshot e release in diverse repository, specifica un criterio di versione utilizzando un blocco maven_config. Questo blocco supporta le seguenti impostazioni:

  • version_policy imposta il criterio di versione con uno dei seguenti valori:
    • VERSION_POLICY_UNSPECIFIED: archivia pacchetti di snapshot e di release. Questo è l'impostazione predefinita.
    • LANCIO: soltanto pacchetti release dello store.
    • SNAPSHOT: archivia solo i pacchetti di snapshot.
  • allow_snapshot_overwrites configura un repository con 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 = "us-central1"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
maven_config {
  version_policy = "RELEASE"
}
}

npm

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "npm"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "npm"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

Dove

  • PROJECT-ID è l'ID del progetto Google Cloud.
  • UPSTREAM_LOCATION è la località del repository upstream. Tieni presente che il repository virtuale e l'upstream devono trovarsi nella stessa regione o in più regioni.
  • UPSTREAM_REPOSITORY_ID è l'ID del repository upstream.
  • UPSTREAM_REPOSITORY_DESCRIPTION è la descrizione facoltativa del repository a monte.
  • LOCATION è la località del repository virtuale.
  • REPOSITORY_ID è l'ID del repository virtuale.
  • DESCRIPTION è la descrizione facoltativa per l'istanza virtuale repository Git. Non includere dati sensibili, in quanto le descrizioni dei repository non sono crittografati.
  • KEY è il nome della chiave di Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita: chiavi di proprietà di Google e gestite da Google.
  • PRIORITY è il valore di priorità facoltativo. La priorità più alta è 1. Le voci con un valore di priorità maggiore hanno la precedenza nel pull ordine.

Python

provider "google" {
    project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo-upstream" {
  location      = "UPSTREAM_LOCATION"
  repository_id = "UPSTREAM_REPOSITORY_ID"
  description   = "UPSTREAM_REPOSITORY_DESCRIPTION"
  format        = "python"
}

resource "google_artifact_registry_repository" "my-repo" {
  depends_on    = []
  location      = "LOCATION"
  repository_id = "REPOSITORY_ID"
  description   = "VIRTUAL_REPOSITORY_DESCRIPTION"
  format        = "python"
  kms_key_name = "KEY"
  mode          = "VIRTUAL_REPOSITORY"
  virtual_repository_config {
    upstream_policies {
      id          = "UPSTREAM_REPOSITORY_ID"
      repository  = google_artifact_registry_repository.my-repo-upstream.id
      priority    = PRIORITY
    }
  }
}

Dove

  • PROJECT-ID è l'ID del progetto Google Cloud.
  • UPSTREAM_LOCATION è la località del repository upstream. Tieni presente che il repository virtuale e l'upstream devono trovarsi nella stessa regione o in più regioni.
  • UPSTREAM_REPOSITORY_ID è l'ID del repository upstream.
  • UPSTREAM_REPOSITORY_DESCRIPTION è la descrizione facoltativa del repository a monte.
  • LOCATION è la località del repository virtuale.
  • REPOSITORY_ID è l'ID del repository virtuale.
  • DESCRIPTION è la descrizione facoltativa per l'istanza virtuale repository Git. Non includere dati sensibili, in quanto le descrizioni dei repository non sono crittografati.
  • KEY è il nome della chiave di Cloud Key Management Service, se utilizzi chiavi di crittografia gestite dal cliente (CMEK) per la crittografia. Ometti questo argomento per utilizzare l'impostazione predefinita: chiavi di proprietà di Google e gestite da Google.
  • PRIORITY è il valore di priorità facoltativo. La priorità più alta è 1. Le voci con un valore di priorità maggiore hanno la precedenza nel pull ordine.

Artifact Registry crea il repository. Esegui questo comando per visualizzare una descrizione del repository:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

Dopo aver creato il repository:

Aggiorna repository upstream

Puoi modificare l'elenco dei repository upstream o regolare la priorità dei repository upstream.

Console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

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

  3. Nell'elenco Upstream del repository virtuale, apporta le modifiche necessarie. Puoi aggiungere e rimuovere repository o modificare la priorità repository nell'elenco

  4. Fai clic su Salva.

gcloud

  1. Modifica il file dei criteri upstream con le tue modifiche. Ad esempio, quando si desidera aggiungere un repository upstream o regolare le impostazioni di priorità.

    Se vuoi rimuovere tutti i repository upstream, il file dei criteri deve e contengono un insieme vuoto di repository.

    []
    
  2. Esegui questo comando per applicare le modifiche al repository virtuale.

    gcloud artifacts repositories update REPOSITORY \
        --upstream-policy-file=UPSTREAM_POLICY_FILE
    

    Sostituisci UPSTREAM_POLICY_FILE con il percorso dell'upstream dei criteri.

    Per ulteriori informazioni sul comando, consulta Riferimento gcloud artefatti Repositories documentazione.

Modifica descrizioni repository

Puoi modificare la descrizione del repository dalla console Google Cloud oppure dal con gcloud CLI.

Console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, selezionalo 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, 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.