Trasferire elementi in un altro registro
Questo articolo illustra come trasferire raccolte di immagini o altri elementi del Registro di sistema da un registro Azure Container a un altro registro. I registri di origine e di destinazione possono trovarsi nella stessa sottoscrizione o in sottoscrizioni diverse, tenant di Active Directory, cloud di Azure o cloud disconnessi fisicamente.
Per trasferire gli artefatti, creare una pipeline di trasferimento che replica gli artefatti tra due registri usando l'archiviazione BLOB:
- Gli artefatti di un registro di origine vengono esportati in un BLOB in un account di archiviazione di origine
- Il BLOB viene copiato dall'account di archiviazione di origine in un account di archiviazione di destinazione
- Il BLOB nell'account di archiviazione di destinazione viene importato come artefatti nel Registro di sistema di destinazione. È possibile configurare la pipeline di importazione per attivare ogni volta che il BLOB degli artefatti viene aggiornato nell'archivio di destinazione.
In questo articolo vengono create le risorse dei prerequisiti per creare ed eseguire la pipeline di trasferimento. L'interfaccia della riga di comando di Azure viene usata per effettuare il provisioning delle risorse associate, ad esempio i segreti di archiviazione. È consigliabile usare l'interfaccia della riga di comando di Azure versione 2.2.0 o successiva. Se è necessario installare o aggiornare l'interfaccia della riga di comando, vedere Installare l'interfaccia della riga di comando di Azure.
Questa funzionalità è disponibile per il livello di servizio Premium del registro contenitori. Per informazioni sui livelli di servizio del registro e sui limiti, vedere livelli di Registro Azure Container.
Importante
Questa funzionalità è attualmente disponibile solo in anteprima. Le anteprime vengono rese disponibili a condizione che l'utente accetti le condizioni supplementari per l'utilizzo. Alcuni aspetti di questa funzionalità potrebbero subire modifiche prima della disponibilità a livello generale.
Prendere in considerazione il caso d'uso
Il trasferimento è ideale per copiare il contenuto tra due registri contenitori di Azure in cloud disconnessi fisicamente, mediati dagli account di archiviazione in ogni cloud. Se invece si vogliono copiare immagini da registri contenitori in cloud connessi, tra cui Docker Hub e altri fornitori di cloud, è consigliabile importare immagini.
Prerequisiti
Registri contenitori : è necessario un registro di origine esistente con artefatti da trasferire e un registro di destinazione. Il trasferimento dell'ACR è destinato allo spostamento tra cloud disconnessi fisicamente. Per i test, i registri di origine e di destinazione possono trovarsi nella stessa sottoscrizione o in una sottoscrizione di Azure diversa, nel tenant di Active Directory o nel cloud.
Se è necessario creare un registro, vedere Avvio rapido: Creare un registro contenitori privato usando l'interfaccia della riga di comando di Azure.
Account di archiviazione: creare account di archiviazione di origine e di destinazione in una sottoscrizione e in un percorso preferito. A scopo di test, è possibile usare la stessa sottoscrizione o le stesse sottoscrizioni dei registri di origine e di destinazione. Per gli scenari tra cloud, in genere si crea un account di archiviazione separato in ogni cloud.
Se necessario, creare gli account di archiviazione con l'interfaccia della riga di comando di Azure o altri strumenti.
Creare un contenitore BLOB per il trasferimento degli artefatti in ogni account. Ad esempio, creare un contenitore denominato transfer.
Insiemi di credenziali delle chiavi: gli insiemi di credenziali delle chiavi sono necessari per archiviare i segreti del token di firma di accesso condiviso usati per accedere agli account di archiviazione di origine e di destinazione. Creare gli insiemi di credenziali delle chiavi di origine e di destinazione nella stessa sottoscrizione o sottoscrizione di Azure dei registri di origine e di destinazione. A scopo dimostrativo, i modelli e i comandi usati in questo articolo presuppongono anche che gli insiemi di credenziali delle chiavi di origine e di destinazione si trovino rispettivamente negli stessi gruppi di risorse dei registri di origine e di destinazione. Questo uso di gruppi di risorse comuni non è obbligatorio, ma semplifica i modelli e i comandi usati in questo articolo.
Se necessario, creare insiemi di credenziali delle chiavi con l'interfaccia della riga di comando di Azure o altri strumenti.
Variabili di ambiente: ad esempio i comandi in questo articolo, impostare le variabili di ambiente seguenti per gli ambienti di origine e di destinazione. Tutti gli esempi sono formattati per la shell Bash.
SOURCE_RG="<source-resource-group>" TARGET_RG="<target-resource-group>" SOURCE_KV="<source-key-vault>" TARGET_KV="<target-key-vault>" SOURCE_SA="<source-storage-account>" TARGET_SA="<target-storage-account>"
Panoramica dello scenario
Creare le tre risorse della pipeline seguenti per il trasferimento di immagini tra registri. Tutti vengono creati usando le operazioni PUT. Queste risorse operano sui registri di origine e di destinazione e sugli account di archiviazione.
L'autenticazione di archiviazione usa token di firma di accesso condiviso, gestiti come segreti negli insiemi di credenziali delle chiavi. Le pipeline usano identità gestite per leggere i segreti negli insiemi di credenziali.
- ExportPipeline: risorsa di lunga durata che contiene informazioni di alto livello sul registro di origine e sull'account di archiviazione. Queste informazioni includono l'URI del contenitore BLOB di archiviazione di origine e l'insieme di credenziali delle chiavi che gestisce il token di firma di accesso condiviso di origine.
- ImportPipeline: risorsa di lunga durata che contiene informazioni di alto livello sul registro di sistema di destinazione e sull'account di archiviazione. Queste informazioni includono l'URI del contenitore BLOB di archiviazione di destinazione e l'insieme di credenziali delle chiavi che gestisce il token di firma di accesso condiviso di destinazione. Un trigger di importazione è abilitato per impostazione predefinita, quindi la pipeline viene eseguita automaticamente quando un BLOB di artefatti si trova nel contenitore di archiviazione di destinazione.
- PipelineRun : risorsa usata per richiamare una risorsa ExportPipeline o ImportPipeline.
- Per eseguire manualmente ExportPipeline, creare una risorsa PipelineRun e specificare gli artefatti da esportare.
- Se è abilitato un trigger di importazione, ImportPipeline viene eseguito automaticamente. Può anche essere eseguito manualmente usando PipelineRun.
- Attualmente è possibile trasferire un massimo di 50 artefatti con ogni PipelineRun.
Informazioni utili
- ExportPipeline e ImportPipeline si trovano in genere in tenant di Active Directory diversi associati ai cloud di origine e di destinazione. Questo scenario richiede identità gestite separate e insiemi di credenziali delle chiavi per le risorse di esportazione e importazione. A scopo di test, queste risorse possono essere inserite nello stesso cloud, condividendo le identità.
- Per impostazione predefinita, i modelli ExportPipeline e ImportPipeline consentono a un'identità gestita assegnata dal sistema di accedere ai segreti dell'insieme di credenziali delle chiavi. I modelli ExportPipeline e ImportPipeline supportano anche un'identità assegnata dall'utente.
Creare e archiviare chiavi di firma di accesso condiviso
Il trasferimento usa token di firma di accesso condiviso (SAS) per accedere agli account di archiviazione negli ambienti di origine e di destinazione. Generare e archiviare i token come descritto nelle sezioni seguenti.
Importante
Anche se il trasferimento ACR funziona con un token SAS generato manualmente archiviato in un Segreto Keyvault, per i carichi di lavoro di produzione è vivamente consigliabile usare invece i Segreti di definizione SAS dell'archiviazione gestita da Keyvault.
Genera token SAS per l'esportazione
Eseguire il comando az storage container generate-sas per generare un token di firma di accesso condiviso per il contenitore nell'account di archiviazione di origine, usato per l'esportazione degli artefatti.
Autorizzazioni token consigliate: Lettura, Scrittura, Elenco, Aggiungi.
Nell'esempio seguente l'output del comando viene assegnato alla variabile di ambiente EXPORT_SAS, preceduta dal carattere '?'. Aggiornare il valore --expiry
per l'ambiente:
EXPORT_SAS=?$(az storage container generate-sas \
--name transfer \
--account-name $SOURCE_SA \
--expiry 2021-01-01 \
--permissions alrw \
--https-only \
--output tsv)
Archiviare il token di firma di accesso condiviso per l'esportazione
Archiviare il token di firma di accesso condiviso nell'insieme di credenziali delle chiavi di Azure di origine usando az keyvault secret set:
az keyvault secret set \
--name acrexportsas \
--value $EXPORT_SAS \
--vault-name $SOURCE_KV
Genera token SAS per l'importazione
Eseguire il comando az storage container generate-sas per generare un token di firma di accesso condiviso per il contenitore nell'account di archiviazione di destinazione, usato per l'importazione degli artefatti.
Autorizzazioni token consigliate: Lettura, Eliminazione, Elenco
Nell'esempio seguente l'output del comando viene assegnato alla variabile di ambiente IMPORT_SAS, preceduta dal carattere '?'. Aggiornare il valore --expiry
per l'ambiente:
IMPORT_SAS=?$(az storage container generate-sas \
--name transfer \
--account-name $TARGET_SA \
--expiry 2021-01-01 \
--permissions dlr \
--https-only \
--output tsv)
Archiviare il token di firma di accesso condiviso per l'importazione
Archiviare il token di firma di accesso condiviso nell'insieme di credenziali delle chiavi di Azure di destinazione usando az keyvault secret set:
az keyvault secret set \
--name acrimportsas \
--value $IMPORT_SAS \
--vault-name $TARGET_KV
Passaggi successivi
Seguire una delle esercitazioni seguenti per creare le risorse di trasferimento dell'ACR. Per la maggior parte dei casi d'uso non automatizzati, è consigliabile usare l'estensione dell'interfaccia della riga di comando di Az.