Artifact Registry consente di archiviare diversi tipi di artefatti, creare più repository in un singolo progetto e associare una specifica regione o più regioni a ciascun repository. In questa pagina vengono descritte alcune considerazioni utili a pianificare le località e l'organizzazione dei repository.
Prendi in considerazione sia i processi interni per la creazione degli artefatti sia l'utilizzo da parte dei consumatori degli artefatti quando crei i repository.
Formati repository
Ogni repository è associato a uno specifico formato di artefatto. Ad esempio, un repository Python archivia i pacchetti Python. Puoi creare più repository per ogni formato nello stesso progetto Google Cloud.
Modalità repository
Esistono diverse modalità di repository. Ogni modalità ha uno scopo diverso, quindi non puoi modificarla dopo aver creato un repository.
- Repository standard
- I repository standard sono normali repository Artifact Registry per gli artefatti privati. Puoi caricare e scaricare gli artefatti direttamente con questi repository e utilizzare Artifact Analysis per cercare vulnerabilità e altri metadati.
- Repository remoto
Un repository di sola lettura che funge da proxy per un'origine esterna, ad esempio Docker Hub, Maven Central o Python Package Index (PyPI). 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 gestisce la copia memorizzata nella cache quando la stessa versione viene richiesta di nuovo.
I repository remoti riducono la latenza e migliorano la disponibilità di build e deployment su Google Cloud. Puoi anche utilizzare Artifact Analysis per analizzare vulnerabilità e altri metadati.
- 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 repository standard, remoto o virtuale.
I repository virtuali semplificano la configurazione client per i consumatori dei tuoi artefatti. Puoi anche ridurre gli attacchi di confusione della dipendenza configurando il criterio upstream in modo da dare la priorità ai repository con artefatti privati rispetto ai repository remoti che memorizzano nella cache gli artefatti pubblici.
Esempio di utilizzo del repository
Il seguente diagramma mostra uno dei molti possibili modi per utilizzare insieme i repository in diverse modalità. Il diagramma mostra un flusso di lavoro in 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 container con l'applicazione per il deployment in Google Kubernetes Engine.
Nel progetto di sviluppo, un team di sviluppo Java utilizza Cloud Build per creare un'applicazione Java.
- La build può richiedere dipendenze Java pubbliche utilizzando il repository virtuale. Il repository virtuale gestisce le dipendenze dal repository remoto, che è un proxy di memorizzazione nella cache per Maven Central.
- Cloud Build carica il pacchetto nel Repository Maven standard nel progetto del componente.
Nel progetto di runtime, Cloud Build containerizza l'applicazione Java.
La build utilizza il repository virtuale Maven per scaricare l'applicazione. Il repository virtuale gestisce il pacchetto dal repository standard nel progetto di sviluppo. La build può anche scaricare dipendenze Java pubbliche dallo stesso repository virtuale.
Nel progetto di runtime, Cloud Build carica l'immagine del container creata in un repository Docker standard.
GKE estrae le immagini dal repository virtuale Docker.
- Il repository Docker standard a monte fornisce immagini private, come 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 località per i servizi Google Cloud offre i vantaggi descritti in Località del repository.
Assistenza per i domini gcr.io
Artifact Registry supporta l'hosting di immagini sul dominio gcr.io
. Se stai passando da Container Registry ad Artifact Registry, puoi configurare Artifact Registry per i repository gcr.io per ridurre al minimo le modifiche all'automazione e ai flussi di lavoro esistenti. Questi repository offrono:
- Reindirizzamento delle richieste al dominio
gcr.io
. - Creazione di repository gcr.io quando viene eseguito il push della prima immagine su un host host gcr.io per garantire la compatibilità con il comportamento di Container Registry.
Per maggiori informazioni, consulta la pagina Passare ai repository con supporto per il dominio gcr.io
Località repository
Puoi creare uno o più repository in una o più regioni supportate. Una buona posizione del repository equilibra i costi di latenza, disponibilità e larghezza di banda per i consumatori dei 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 una serie di vantaggi:
Riduci i costi di latenza e traffico in uscita dalla 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 è previsto alcun costo per il traffico in uscita da Artifact Registry ad altri servizi Google Cloud nella stessa area geografica.
Sebbene non sia previsto alcun costo per il traffico in uscita da una località a più aree geografiche a un servizio Google Cloud in un'area geografica corrispondente, questi prezzi si applicano solo a un insieme limitato di regioni.
- Per
us
(più aree geografiche), il traffico in uscita verso un'area geografica negli Stati Uniti, ad esempious-central
, non viene addebitato; verso qualsiasi area geografica del Canada o del Sud America. - Per
asia
(più regioni), il traffico in uscita verso le regioni dell'Asia, comeasia-northeast1
, non viene addebitato, mentre per il traffico in uscita verso le regioni in Australia viene addebitato il traffico in uscita verso le regioni dell'Australia.
- Per
Puoi utilizzare il flusso di immagini in GKE e Dataproc Serverless solo se le immagini dei container sono archiviate nei repository Artifact Registry nella stessa regione dei carichi di lavoro o in una regione multiregionale corrispondente a quella con i tuoi carichi di lavoro. Il flusso di immagini può ridurre notevolmente i tempi di inizializzazione dei carichi di lavoro quando utilizzi immagini container più grandi, poiché i carichi di lavoro possono essere avviati prima del download dell'intera immagine.
Considera la località dei consumatori al di fuori di Google Cloud. Ad esempio, se il team di sviluppatori in Australia deve scaricare gli artefatti da Artifact Registry alle proprie workstation locali, un repository in una regione australiana ridurrà la latenza e comporterà costi per il traffico in uscita inferiori rispetto a un repository situato in un altro continente.
Limitazione delle località dei repository
Se devi rispettare regolamenti o criteri che richiedono di archiviare i dati in regioni specifiche, puoi includere un vincolo di località delle risorse nel criterio dell'organizzazione di Google Cloud che consente la creazione di repository solo in regioni conformi. Artifact Registry applica il vincolo solo dopo che lo hai incluso nel criterio dell'organizzazione. Se disponi di repository esistenti in località non conformi, devi spostare personalmente gli artefatti in un repository in una località conforme e poi eliminare il repository non conforme.
Struttura del progetto
La gerarchia delle risorse è il modo in cui organizzi le risorse nei progetti Google Cloud. La struttura che scegli dipende da fattori come i requisiti di governance dei dati, i limiti di trust e la struttura dei team.
Esistono due approcci generali per la configurazione dei repository in organizzazioni con più progetti.
- Centralizza i repository
- Crea tutti i repository in un singolo progetto, quindi concedi l'accesso alle entità di altri progetti a livello di repository. Questo approccio può essere più efficace quando una singola persona o un team gestisce l'amministrazione del repository e l'accesso al repository in tutta l'organizzazione. Può anche semplificare la configurazione di soluzioni o repository virtuali come Software Delivery Shield poiché è sufficiente abilitare e gestire una singola istanza di Artifact Registry.
- Repository specifici del progetto
- Crea repository in progetti che archiviano e scaricano gli artefatti. Questo approccio potrebbe essere necessario quando hai criteri di governance dei dati o limiti di trust che richiedono una separazione delle risorse e un maggiore controllo delle risorse a livello di progetto.
Controllo dell'accesso
I repository sono accessibili solo con le autorizzazioni appropriate a meno che non ne configuri l'accesso pubblico. Puoi concedere le autorizzazioni a livello di progetto o repository.
Alcuni servizi Google Cloud, come Cloud Build, Cloud Run e GKE, utilizzano account di servizio predefiniti con autorizzazioni predefinite per i repository nello stesso progetto Google Cloud. Tuttavia, queste impostazioni predefinite potrebbero non essere adatte al processo di sviluppo del software o potrebbero non essere conformi ai requisiti di sicurezza o dei criteri della tua organizzazione. L'amministratore del repository deve concedere esplicitamente l'accesso ai repository a questi servizi se:
- Artifact Registry si trova in un progetto diverso rispetto al servizio che con cui interagisce.
- Stai utilizzando i ruoli IAM personalizzati con gli account di servizio predefiniti anziché con il ruolo predefinito.
- Non stai utilizzando l'account di servizio predefinito per il servizio Google Cloud.
- Stai configurando i repository virtuali. Devi concedere esplicitamente all'account di servizio Artifact Registry l'accesso ai repository upstream.
Per le altre entità che richiedono l'accesso ai repository, l'amministratore del repository deve concedere l'accesso. Seguindo il principio di sicurezza del privilegio minimo, concedi le autorizzazioni minime richieste. Ad esempio:
- Puoi eseguire il deployment di immagini container in Artifact Registry nei cluster 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 lo sviluppo per le applicazioni che si trovano nel repository di sviluppo e produzione per le applicazioni rilasciate. Gli sviluppatori richiedono l'accesso in lettura e scrittura al repository di sviluppo e l'accesso in sola lettura al repository di produzione.
- Hai un repository dimostrativo con applicazioni di esempio. Il tuo team di vendita richiede solo l'accesso di sola lettura per scaricare le demo.
Crittografia dei dati
Per impostazione predefinita, Google Cloud cripta automaticamente i dati quando sono at-rest utilizzando chiavi di crittografia gestite da Google. Se hai requisiti di conformità o normativi specifici 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 risorse specifiche per un servizio Google Cloud. In Artifact Registry, puoi aggiungere etichette ai repository in modo da raggrupparle o filtrare gli elenchi di repository per etichetta. Ad esempio, puoi utilizzare le etichette per raggruppare i repository per fase di sviluppo o team a fini di automazione o fatturazione. Per ulteriori informazioni sulla creazione e sull'utilizzo delle etichette dei repository, consulta Etichettatura dei repository.
Puoi anche applicare tag ai repository. Sebbene le etichette vengano principalmente utilizzate per organizzare e filtrare le risorse specifiche di un servizio, i tag servono per il controllo programmatico dei criteri in un'organizzazione Google Cloud. Per ulteriori informazioni, consulta Tagging dei repository.
Passaggi successivi
- Crea repository standard
- Scopri di più sui repository remoti
- Scopri di più sui repository virtuali
- Crea repository remoti
- Crea repository virtuali