Panoramica dei repository

Artifact Registry ti consente di archiviare diversi tipi di elementi, di creare più repository in un unico progetto e di associare a ogni repository una regione specifica o una regione a più regioni.In questa pagina vengono descritte le considerazioni per aiutarti a pianificare le posizioni e l'organizzazione dei tuoi repository.

Prendi in considerazione sia i processi interni per la creazione degli artefatti che l'utilizzo da parte dei consumer dei tuoi artefatti quando crei i tuoi repository.

Formati dei repository

Ogni repository è associato a un formato di elementi specifico. Ad esempio, un repository Docker immagazzina le immagini Docker. Puoi creare più repository per ogni formato in lo stesso progetto Google Cloud.

Modalità del repository

Esistono più modalità di repository. Ogni modalità ha uno scopo diverso, pertanto non puoi modificare la modalità del repository dopo averlo creato.

Repository standard
I repository standard sono normali repository Artifact Registry per gli artefatti privati. Carichi e scarichi gli elementi direttamente con questi repository e utilizzi Artifact Analysis per cercare vulnerabilità e altri metadati.
Repository remoto

Un repository di sola lettura che funge da proxy per archiviare gli artefatti della preimpostazione origini esterne come Docker Hub, Maven Central, l'indice dei pacchetti Python (PyPI), Debian o CentOS, nonché origini definite dall'utente per formati. La prima volta che richiedi una versione dell'elemento, il repository la scarica dall'origine esterna e ne memorizza una copia nella cache. Il repository pubblica la copia memorizzata nella cache quando viene richiesta nuovamente.

I repository remoti riducono la latenza e migliorano la disponibilità per le compilazioni e i deployment su Google Cloud. Puoi anche utilizzare Analisi degli elementi per verificare la presenza di vulnerabilità e altri metadati nei pacchetti memorizzati nella cache.

Repository virtuale

Un repository di sola lettura che funge da singolo punto di accesso per scaricare, installare o eseguire il deployment di artefatti dello stesso formato da uno o più repository upstream. Un repository upstream può essere un un repository standard, remoto o virtuale.

I repository virtuali semplificano la configurazione del client per i consumatori dei tuoi elementi. Puoi anche ridurre attacchi di confusione da dipendenza configurando il tuo upstream per assegnare la priorità ai repository con i tuoi artefatti privati in cui sono memorizzati gli artefatti pubblici nella cache.

Esempio di utilizzo del repository

Il seguente diagramma mostra uno dei molti modi possibili per utilizzare i repository in modalità diverse. Il diagramma mostra un flusso di lavoro tra due progetti Google Cloud. In un progetto di sviluppo, gli sviluppatori creano un'applicazione Java. In un progetto di runtime separato, un'altra build crea un'immagine del contenitore con l'applicazione per il deployment in Google Kubernetes Engine.

Repository standard, virtuali e remoti utilizzati in due progetti.

  1. Nel progetto di sviluppo, un team di sviluppo Java utilizza Cloud Build per creare un'applicazione Java.

    • La compilazione può richiedere dipendenze Java pubbliche utilizzando il repository virtuale. Il repository virtuale gestisce le dipendenze dal repository di memorizzazione nella cache, che è un proxy di memorizzazione nella cache per Maven Central.
    • Cloud Build carica il pacchetto nel repository Maven standard nel progetto del componente.
  2. Nel progetto di runtime, Cloud Build esegue il containerizzazione dell'applicazione Java.

    La build utilizza il Repository virtuale Maven per scaricare l'applicazione. Il repository virtuale serve il pacchetto dal repository standard nel progetto di sviluppo. La compilazione può anche scaricare le dipendenze Java pubbliche dallo stesso repository virtuale.

  3. Nel progetto di runtime, Cloud Build carica l'immagine del container creata in un repository Docker standard.

  4. GKE estrae le immagini dal repository virtuale Docker.

    • Il repository Docker standard a monte fornisce immagini private, come per l'applicazione Java containerizzata.
    • Il repository remoto upstream fornisce le immagini richieste da GKE da Docker Hub.

In questo esempio, tutti i repository, le build e i cluster GKE si trovano nella stessa regione. L'utilizzo della stessa posizione per i servizi Google Cloud offre vantaggi descritti in Posizione del repository.

Località repository

Puoi creare uno o più repository in un una o più regioni . Una buona posizione del repository bilancia i costi di latenza, disponibilità e larghezza di banda per i consumatori di dati. La tua organizzazione potrebbe anche avere requisiti di conformità specifici.

Considerazioni sulla località

La creazione di un repository nella stessa regione di altri servizi Google Cloud offre diversi vantaggi:

  • Riduci la latenza e i costi di uscita di rete creando repository nella stessa regione in cui esegui GKE, Cloud Run, Cloud Build e altri servizi Google Cloud che interagiscono con il repository. Non viene addebitato alcun costo per il traffico in uscita da Artifact Registry verso altri servizi Google Cloud nella stessa regione.

    Sebbene non sia previsto alcun addebito per l'egress da una multiregione a un servizio Google Cloud in una regione corrispondente, questi prezzi si applicano solo a un insieme limitato di regioni.

    • Per la regione multipla us, il traffico in uscita verso una regione degli Stati Uniti come us-central non viene addebitato, mentre viene addebitato per qualsiasi regione del Canada o del Sud America.
    • Per la regione multipla asia, il traffico in uscita verso regioni asiatiche come asia-northeast1 non viene addebitato, ma viene addebitato il traffico in uscita verso regioni australiane.
  • Puoi utilizzare lo streaming di immagini solo in GKE e Dataproc Serverless se le immagini container sono archiviate nei repository Artifact Registry nella stessa regione dei tuoi carichi di lavoro o in una regione con più regioni che corrisponde alla regione con i tuoi carichi di lavoro. Lo streaming di immagini può ridurre in modo significativo il tempo di inizializzazione dei carichi di lavoro quando utilizzi immagini contenitore più grandi, poiché i carichi di lavoro possono iniziare prima del download dell'intera immagine.

  • Prendi in considerazione la posizione dei consumatori al di fuori di Google Cloud. Per Ad esempio, se il team di sviluppatori in Australia deve scaricare gli artefatti da Artifact Registry alle rispettive workstation locali, in una regione australiana ridurrà la latenza e i costi per il traffico in uscita saranno inferiori rispetto a un repository situato in un altro continente.

Limitazione delle località dei repository

Se devi rispettare normative o criteri che richiedono di archiviare i dati in regioni specifiche, puoi includere un vincolo per le località delle risorse nei criteri dell'organizzazione Google Cloud che consenta la creazione di repository solo nelle regioni conformi. Artifact Registry applica il vincolo solo dopo che lo hai incluso nei criteri della tua organizzazione. Se hai già dei repository in località non conformi, devi spostare manualmente gli elementi in un repository in una località conforme ed eliminare il repository non conforme.

Criteri di pulizia

Un criterio di pulizia di Artifact Registry definisce i criteri per eliminare automaticamente le versioni degli artefatti di cui non hai più bisogno o per conservare gli artefatti che vuoi archiviare a tempo indeterminato.

I criteri di pulizia sono utili se archivi molte versioni degli artefatti, ma e mantenere solo le versioni specifiche rilasciate in produzione. Puoi definire criteri di eliminazione con i criteri per eliminare gli elementi e criteri di conservazione con i criteri per conservarli.

Se una versione dell'elemento corrisponde ai criteri sia di un criterio di eliminazione sia di un criterio di conservazione, Artifact Registry applica il criterio di conservazione.

Elimina criteri

I criteri di eliminazione eliminano gli elementi corrispondenti ai seguenti criteri obbligatori:

  • Stato tag: indica se il criterio deve verificare la presenza di artefatti con tag o di artefatti senza tag. Gli artefatti vengono taggati quando si esegue il push o il pull di un'immagine o da un repository. Per saperne di più sui tag Docker, consulta Concetti relativi ai container.

    • Qualsiasi stato del tag: ignora lo stato del tag e si applica agli elementi con tag e senza tag.
    • Con tag: si applica solo agli elementi con tag.
    • Senza tag: si applica solo agli elementi non taggati.

    I formati che non supportano i tag vengono trattati come untagged. Artefatti con tag e non possono essere eliminati nei repository con tag immutabili abilitati.

    Per maggiori informazioni informazioni sullo stato dei tag in base ai criteri di pulizia, consulta le Riferimento TagState.

Di seguito sono riportati modi facoltativi per definire il criterio di eliminazione:

  • Prefissi tag: si tratta di un elenco separato da virgole di prefissi dei tag. Ad esempio, i prefissi test e staging corrispondono alle immagini con i tag testenv e staging-1.5. tagState deve essere impostato su TAGGED per utilizzare i prefissi tag.
    • Prefissi di versione: sono un elenco separato da virgole della versione dell'elemento prefissi. Ad esempio, v1, v2 corrisponderanno alle versioni v1.5, v2.0alpha e v10.2.
  • Prefissi pacchetto: è un elenco di prefissi dei nomi degli elementi. Puoi inserire più prefissi premendo Enter o , tra i prefissi. Ad esempio, red, blue creerebbe due prefissi, red e blue e corrisponde ai nomi degli artefatti red-team, redis, e bluebird.
  • Precedente di: indica un periodo di tempo minimo trascorso da una versione dell'artefatto è stata caricata nel repository, specificata come durata. Ad esempio, 30d corrisponde a 30 giorni. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
  • Più recente di: è il tempo massimo trascorso dal caricamento di una versione dell'elemento nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni.

Criteri di Keep

I criteri di conservazione mantengono gli elementi corrispondenti alle stesse condizioni dei criteri di eliminazione o un numero predefinito di versioni più recenti.

Ad esempio, dato un repository contenente i seguenti elementi:

IMAGE: us-west1-docker.pkg.dev/my-project/release-xyz-v1
DIGEST: sha256:1b0a26bd07a3d17473d8d8468bea84015e27f87124b2831234581bce13f61370
TAGS:
CREATE_TIME: 2023-06-19T18:59:09
UPDATE_TIME: 2023-06-19T18:59:10

IMAGE: us-west1-docker.pkg.dev/my-project/release-xyz-v2
DIGEST: sha256:6e494387c901caf429c1bf77bd92fb82b33a68c0e19f123456a3ac8d27a7049d
TAGS: latest
CREATE_TIME: 2023-06-19T18:59:09
UPDATE_TIME: 2023-06-19T18:59:09

IMAGE: us-west1-docker.pkg.dev/my-project/release-v2
DIGEST: sha256:6e494387c901caf429c1bf77bd92fb82b33a68c0e19f123456a3ac8d27a7049d
TAGS: latest
CREATE_TIME: 2023-06-19T18:59:09
UPDATE_TIME: 2023-06-19T18:59:09

Se il criterio Mantieni versioni più recenti è impostato per conservare tre versioni di solo pacchetti corrispondenti ai prefissi pacchetto: {release-xyz} release-xyz-v1 e release-xyz-v2 vengono conservati.

Le eliminazioni attivate dai criteri di eliminazione vengono conteggiate ai fini della quota per richieste di eliminazione per progetto del tuo Artifact Registry.

Per creare e applicare criteri di pulizia al tuo repository, consulta Configurare i criteri di pulizia.

Assistenza per i domini gcr.io

Artifact Registry supporta l'hosting di immagini sul dominio gcr.io. Se di passaggio da Container Registry ad Artifact Registry, puoi configurare Artifact Registry dei repository gcr.io per ridurre al minimo le modifiche al tuo ambiente automazione e flussi di lavoro. Questi repository offrono:

  • Reindirizzamento delle richieste al dominio gcr.io.
  • Creazione di repository gcr.io quando viene eseguito il push della prima immagine su gcr.io per la compatibilità con il comportamento di Container Registry.

Per ulteriori informazioni, vedi Transizione ai repository con il supporto del dominio gcr.io

Struttura del progetto

La gerarchia delle risorse è il modo in cui organizzi le risorse tra progetti Google Cloud. La struttura che scegli dipende da fattori come i requisiti di governance dei dati, i confini di attendibilità e la struttura del team.

Esistono due approcci generali per configurare i repository nelle organizzazioni con più progetti.

Centralizza i repository
Crea tutti i repository in un singolo progetto e concedi l'accesso a di altri progetti a livello di repository. Questo approccio può essere più efficaci quando una singola persona o un singolo team gestisce il repository accesso amministrativo e ai repository in tutta l'organizzazione.
Può anche semplificare la configurazione di repository o soluzioni virtuali come Software Delivery Shield perché devi abilitare e gestire una sola istanza di Artifact Registry.
Repository specifici del progetto
Crea repository nei progetti che archiviano e scaricano gli artefatti. Questo approccio potrebbe essere necessario se hai criteri di governance dei dati o confini di attendibilità che richiedono una maggiore separazione e un maggiore controllo delle risorse a livello di progetto.

Controllo degli accessi

I repository sono accessibili solo con le autorizzazioni appropriate, a meno che non li configurerai per l'accesso pubblico. Puoi concedere autorizzazioni a livello di progetto o repository.

Alcuni servizi Google Cloud utilizzano account di servizio predefiniti con autorizzazioni predefinite per i repository nello stesso progetto Google Cloud. Tuttavia, questi valori predefiniti potrebbero non essere adatti al processo di sviluppo del software o non essere conformi ai requisiti di sicurezza o ai criteri della tua organizzazione. L'amministratore del repository deve concedere esplicitamente questi servizi accedono ai repository se:

  • Artifact Registry si trova in un progetto diverso da quello del servizio che interagisce con esso.
  • Stai utilizzando ruoli IAM personalizzati con il servizio predefinito di Compute Engine anziché il ruolo predefinito.
  • Non utilizzi l'account di servizio predefinito per il servizio Google Cloud.
  • Stai configurando repository virtuali. Devi concedere esplicitamente l'accesso dell'account di servizio Artifact Registry all'upstream repository.

Per gli altri principali che richiedono l'accesso ai repository, l'amministratore del repository deve concedere l'accesso. Seguendo il principio di sicurezza di almeno concedi le autorizzazioni minime richieste. Ad esempio:

  • Esegui il deployment delle immagini container in Artifact Registry su GKE in diversi progetti. L'account di servizio per i nodi in questi cluster richiede solo l'accesso in lettura ai repository.
  • Disponi di un repository per le applicazioni in fase di sviluppo nel repository di produzione per le applicazioni rilasciate. Gli sviluppatori richiedono l'accesso in lettura e scrittura al repository di sviluppo e accesso di sola lettura al repository di produzione.
  • Hai un repository demo con applicazioni di esempio. Solo il tuo team di vendita richiede l'accesso di sola lettura per scaricare le demo.

Limitare i download di elementi

Puoi limitare i download degli elementi con le regole di download. Le regole di download ti consentono di consentire o negare i download di artefatti dai tuoi repository e pacchetti. Puoi anche impostare delle condizioni in modo che la regola venga applicata a tag specifici o versioni successive.

Per informazioni dettagliate sul funzionamento delle regole di download, consulta la sezione Limitare i download degli elementi. della panoramica Controlla l'accesso e proteggi gli artefatti.

Crittografia dei dati

Per impostazione predefinita, Google Cloud cripta automaticamente i dati quando sono in stato at-rest utilizzando chiavi di proprietà di Google e gestite da Google. Se hai requisiti di conformità o normativi requisiti relativi alle chiavi che proteggono i tuoi dati, puoi creare repository criptati con chiavi di crittografia gestite dal cliente (CMEK).

Artifact Registry supporta anche i vincoli dei criteri dell'organizzazione che possono richiedere CMEK per proteggere le risorse.

Etichette e tag

Le etichette consentono di organizzare le risorse specifiche di un ambiente Google Cloud completamente gestito di Google Cloud. In Artifact Registry, puoi aggiungere etichette ai repository in modo da poterli raggruppare o filtrare gli elenchi dei repository in base all'etichetta. Ad esempio: puoi utilizzare le etichette per raggruppare i repository per fase di sviluppo o per team per l'automazione o la fatturazione. Per ulteriori informazioni sulla creazione e sull'utilizzo sulle etichette dei repository, consulta Etichettatura dei repository.

Puoi anche applicare tag ai repository. Sebbene le etichette siano principalmente destinate all'organizzazione e al filtro delle risorse specifiche del servizio, i tag sono destinati al controllo programmatico dei criteri in un'organizzazione Google Cloud. Per maggiori informazioni consulta la sezione Tagging dei repository.

Passaggi successivi