Eventi
Creare app e agenti di intelligenza artificiale
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Iscriviti subitoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Completare i prerequisiti descritti qui prima di tentare le azioni in questo articolo. Ciò significa che:
Importante
Il trasferimento del Registro Azure Container supporta artefatti con limiti di dimensioni del livello a 8 GB a causa delle limitazioni tecniche.
Per la maggior parte dei casi d'uso non automatizzati, è consigliabile usare l'estensione dell'interfaccia della riga di comando di Az, se possibile. È possibile visualizzare la documentazione per l'estensione dell'interfaccia della riga di comando di Az qui.
Creare una risorsa ExportPipeline per il registro contenitori di origine usando la distribuzione di modelli di Azure Resource Manager.
Copiare i file modello ExportPipeline Resource Manager in una cartella locale.
Immettere i valori dei parametri seguenti nel file azuredeploy.parameters.json
:
Parametro | Valore |
---|---|
registryName | Nome del registro contenitori di origine |
exportPipelineName | Nome scelto per la pipeline di esportazione |
targetUri | URI del contenitore di archiviazione nell'ambiente di origine (destinazione della pipeline di esportazione). Esempio: https://sourcestorage.blob.core.windows.net/transfer |
keyVaultName | Nome dell'insieme di credenziali delle chiavi di origine |
sasTokenSecretName | Nome del segreto del token di firma di accesso condiviso nell'insieme di credenziali delle chiavi di origine Esempio: acrexportsas |
La proprietà options
per le pipeline di esportazione supporta valori booleani facoltativi. Sono consigliati i valori seguenti:
Parametro | Valore |
---|---|
opzioni | OverwriteBlobs - Sovrascrivere i BLOB di destinazione esistenti ContinueOnErrors: continuare l'esportazione degli artefatti rimanenti nel Registro di sistema di origine in caso di errore di un'esportazione di un artefatto. |
Eseguire az deployment group create per creare una risorsa denominata exportPipeline, come illustrato negli esempi seguenti. Per impostazione predefinita, con la prima opzione, il modello di esempio abilita un'identità assegnata dal sistema nella risorsa ExportPipeline.
Con la seconda opzione, è possibile fornire alla risorsa un'identità assegnata dall'utente. (Creazione dell'identità assegnata dall'utente non visualizzata).
Con entrambe le opzioni, il modello configura l'identità per accedere al token di firma di accesso condiviso nell'insieme di credenziali delle chiavi di esportazione.
az deployment group create \
--resource-group $SOURCE_RG \
--template-file azuredeploy.json \
--name exportPipeline \
--parameters azuredeploy.parameters.json
In questo comando specificare l'ID risorsa dell'identità assegnata dall'utente come parametro aggiuntivo.
az deployment group create \
--resource-group $SOURCE_RG \
--template-file azuredeploy.json \
--name exportPipeline \
--parameters azuredeploy.parameters.json \
--parameters userAssignedIdentity="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUserAssignedIdentity"
Nell'output del comando prendere nota dell'ID risorsa (id
) della pipeline. È possibile archiviare questo valore in una variabile di ambiente per usarlo in un secondo momento eseguendo il comando az deployment group show. Ad esempio:
EXPORT_RES_ID=$(az deployment group show \
--resource-group $SOURCE_RG \
--name exportPipeline \
--query 'properties.outputResources[1].id' \
--output tsv)
Creare una risorsa ImportPipeline nel registro contenitori di destinazione usando la distribuzione del modello di Azure Resource Manager. Per impostazione predefinita, la pipeline è abilitata per l'importazione automatica quando l'account di archiviazione nell'ambiente di destinazione ha un BLOB di artefatti.
Copiare i file modello di Resource Manager ImportPipeline in una cartella locale.
Immettere i valori dei parametri seguenti nel file azuredeploy.parameters.json
:
Parametro | Valore |
---|---|
registryName | Nome del registro contenitori di destinazione |
importPipelineName | Nome scelto per la pipeline di importazione |
sourceUri | URI del contenitore di archiviazione nell'ambiente di destinazione (origine per la pipeline di importazione). Esempio: https://targetstorage.blob.core.windows.net/transfer |
keyVaultName | Nome dell'insieme di credenziali delle chiavi di destinazione |
sasTokenSecretName | Nome del segreto del token di firma di accesso condiviso nell'insieme di credenziali delle chiavi di destinazione Esempio: acr importsas |
La proprietà options
per la pipeline di importazione supporta valori booleani facoltativi. Sono consigliati i valori seguenti:
Parametro | Valore |
---|---|
opzioni | OverwriteTags - Sovrascrivere i tag di destinazione esistenti DeleteSourceBlobOnSuccess - Eliminare il BLOB di archiviazione di origine dopo aver completato l'importazione nel Registro di sistema di destinazione ContinueOnErrors: continuare l'importazione degli artefatti rimanenti nel Registro di sistema di destinazione se un'importazione di un artefatto ha esito negativo. |
Eseguire az deployment group create per creare una risorsa denominata importPipeline, come illustrato negli esempi seguenti. Per impostazione predefinita, con la prima opzione, il modello di esempio abilita un'identità assegnata dal sistema nella risorsa ImportPipeline.
Con la seconda opzione, è possibile fornire alla risorsa un'identità assegnata dall'utente. (Creazione dell'identità assegnata dall'utente non visualizzata).
Con entrambe le opzioni, il modello configura l'identità per accedere al token di firma di accesso condiviso nell'insieme di credenziali delle chiavi di importazione.
az deployment group create \
--resource-group $TARGET_RG \
--template-file azuredeploy.json \
--name importPipeline \
--parameters azuredeploy.parameters.json
In questo comando specificare l'ID risorsa dell'identità assegnata dall'utente come parametro aggiuntivo.
az deployment group create \
--resource-group $TARGET_RG \
--template-file azuredeploy.json \
--name importPipeline \
--parameters azuredeploy.parameters.json \
--parameters userAssignedIdentity="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUserAssignedIdentity"
Se si prevede di eseguire manualmente l'importazione, prendere nota dell'ID risorsa (id
) della pipeline. È possibile archiviare questo valore in una variabile di ambiente per usarlo in un secondo momento eseguendo il comando az deployment group show . Ad esempio:
IMPORT_RES_ID=$(az deployment group show \
--resource-group $TARGET_RG \
--name importPipeline \
--query 'properties.outputResources[1].id' \
--output tsv)
Creare una risorsa PipelineRun per il registro contenitori di origine usando la distribuzione di modelli di Azure Resource Manager. Questa risorsa esegue la risorsa ExportPipeline creata in precedenza ed esporta gli artefatti specificati dal registro contenitori come BLOB nell'account di archiviazione di origine.
Copiare i file modello di Resource Manager PipelineRun in una cartella locale.
Immettere i valori dei parametri seguenti nel file azuredeploy.parameters.json
:
Parametro | Valore |
---|---|
registryName | Nome del registro contenitori di origine |
pipelineRunName | Nome scelto per l'esecuzione |
pipelineResourceId | ID risorsa della pipeline di esportazione. Esempio: /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.ContainerRegistry/registries/<sourceRegistryName>/exportPipelines/myExportPipeline |
targetName | Nome scelto per il BLOB degli artefatti esportati nell'account di archiviazione di origine, ad esempio myblob |
artifacts | Matrice di artefatti di origine da trasferire, come tag o digest del manifesto Esempio: [samples/hello-world:v1", "samples/nginx:v1" , "myrepository@sha256:0a2e01852872..."] |
Se si ridistribuisce una risorsa PipelineRun con proprietà identiche, è necessario usare anche la proprietà forceUpdateTag.
Eseguire az deployment group create per creare la risorsa PipelineRun. Nell'esempio seguente viene nominata la distribuzione exportPipelineRun.
az deployment group create \
--resource-group $SOURCE_RG \
--template-file azuredeploy.json \
--name exportPipelineRun \
--parameters azuredeploy.parameters.json
Per un uso successivo, archiviare l'ID risorsa della pipeline eseguita in una variabile di ambiente:
EXPORT_RUN_RES_ID=$(az deployment group show \
--resource-group $SOURCE_RG \
--name exportPipelineRun \
--query 'properties.outputResources[0].id' \
--output tsv)
L'esportazione degli artefatti può richiedere alcuni minuti. Al termine della distribuzione, verificare l'esportazione degli artefatti elencando il BLOB esportato nel contenitore di trasferimento dell'account di archiviazione di origine. Ad esempio, eseguire il comando az storage blob list:
az storage blob list \
--account-name $SOURCE_SA \
--container transfer \
--output table
Usare lo strumento AzCopy o altri metodi per trasferire i dati BLOB dall'account di archiviazione di origine all'account di archiviazione di destinazione.
Ad esempio, il comando azcopy copy
seguente copia myblob dal contenitore di trasferimento nell'account di origine al contenitore di trasferimento nell'account di destinazione. Se nell'account di destinazione il BLOB esiste, viene sovrascritto. L'autenticazione usa token di firma di accesso condiviso con autorizzazioni appropriate per i contenitori di origine e di destinazione. I passaggi per la creazione di token non vengono visualizzati.
azcopy copy \
'https://<source-storage-account-name>.blob.core.windows.net/transfer/myblob'$SOURCE_SAS \
'https://<destination-storage-account-name>.blob.core.windows.net/transfer/myblob'$TARGET_SAS \
--overwrite true
Se è stato abilitato il parametro sourceTriggerStatus
di ImportPipeline (valore predefinito), la pipeline viene attivata dopo la copia del BLOB nell'account di archiviazione di destinazione. L'importazione degli artefatti può richiedere alcuni minuti. Al termine dell'importazione, verificare l'importazione dell'artefatto elencando i repository nel registro contenitori di destinazione. Ad esempio, eseguire az acr repository list:
az acr repository list --name <target-registry-name>
Nota
Il trigger di origine importerà solo i BLOB con una data di ultima modifica compresa negli ultimi 60 giorni. Se si intende usare il trigger di origine per importare BLOB precedenti, aggiornare l'ora dell'ultima modifica dei BLOB aggiungendo i metadati del BLOB o importandoli con esecuzioni di pipeline create manualmente.
Se non è stato abilitato il parametro sourceTriggerStatus
della pipeline di importazione, eseguire manualmente la risorsa ImportPipeline, come illustrato nella sezione seguente.
È anche possibile usare una risorsa PipelineRun per attivare un'importazione ImportPipeline per l'importazione degli artefatti nel registro contenitori di destinazione.
Copiare i file modello di Resource Manager PipelineRun in una cartella locale.
Immettere i valori dei parametri seguenti nel file azuredeploy.parameters.json
:
Parametro | Valore |
---|---|
registryName | Nome del registro contenitori di destinazione |
pipelineRunName | Nome scelto per l'esecuzione |
pipelineResourceId | ID risorsa della pipeline di importazione. Esempio: /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.ContainerRegistry/registries/<sourceRegistryName>/importPipelines/myImportPipeline |
sourceName | Nome del BLOB esistente per gli artefatti esportati nell'account di archiviazione, ad esempio myblob |
Se si ridistribuisce una risorsa PipelineRun con proprietà identiche, è necessario usare anche la proprietà forceUpdateTag.
Eseguire az deployment group create per eseguire la risorsa.
az deployment group create \
--resource-group $TARGET_RG \
--name importPipelineRun \
--template-file azuredeploy.json \
--parameters azuredeploy.parameters.json
Per un uso successivo, archiviare l'ID risorsa della pipeline eseguita in una variabile di ambiente:
IMPORT_RUN_RES_ID=$(az deployment group show \
--resource-group $TARGET_RG \
--name importPipelineRun \
--query 'properties.outputResources[0].id' \
--output tsv)
Al termine della distribuzione, verificare l'importazione dell'artefatto elencando i repository nel registro contenitori di destinazione. Ad esempio, eseguire az acr repository list:
az acr repository list --name <target-registry-name>
Se si ridistribuisce una risorsa PipelineRun con proprietà identiche, è necessario sfruttare la proprietà forceUpdateTag. Questa proprietà indica che la risorsa PipelineRun deve essere ricreata anche se la configurazione non è stata modificata. Assicurarsi che forceUpdateTag sia diverso ogni volta che si ridistribuisce la risorsa PipelineRun. L'esempio seguente ricrea un oggetto PipelineRun per l'esportazione. L'oggetto datetime corrente viene usato per impostare forceUpdateTag, assicurando in tal modo che questa proprietà sia sempre univoca.
CURRENT_DATETIME=`date +"%Y-%m-%d:%T"`
az deployment group create \
--resource-group $SOURCE_RG \
--template-file azuredeploy.json \
--name exportPipelineRun \
--parameters azuredeploy.parameters.json \
--parameters forceUpdateTag=$CURRENT_DATETIME
I comandi di esempio seguenti usano az resource delete per eliminare le risorse della pipeline create in questo articolo. Gli ID risorsa sono stati archiviati in precedenza nelle variabili di ambiente.
# Delete export resources
az resource delete \
--resource-group $SOURCE_RG \
--ids $EXPORT_RES_ID $EXPORT_RUN_RES_ID \
--api-version 2019-12-01-preview
# Delete import resources
az resource delete \
--resource-group $TARGET_RG \
--ids $IMPORT_RES_ID $IMPORT_RUN_RES_ID \
--api-version 2019-12-01-preview
Per indicazioni sulla risoluzione dei problemi, vedere Risoluzione dei problemi di trasferimento del Registro Azure Container.
Eventi
Creare app e agenti di intelligenza artificiale
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Iscriviti subito