Dela via


ACR-överföring med Az CLI

Den här artikeln visar hur du använder funktionen ACR Transfer med acrtransfer Az CLI-tillägget.

Fullständiga krav

Slutför de krav som beskrivs här innan du försöker utföra åtgärderna i den här artikeln. Detta innebär att:

  • Du har ett befintligt Premium SKU-register i båda molnen.
  • Du har en befintlig container för lagringskonto i båda molnen.
  • Du har en befintlig Keyvault med en hemlighet som innehåller en giltig SAS-token med nödvändiga behörigheter i båda molnen.
  • Du har en ny version av Az CLI installerad i båda molnen.

Installera Az CLI-tillägget

I AzureCloud kan du installera tillägget med följande kommando:

az extension add --name acrtransfer

I AzureCloud och andra moln kan du installera bloben direkt från en container för offentliga lagringskonton. Bloben finns i acrtransferext lagringskontot, dist containern, acrtransfer-1.0.0-py2.py3-none-any.wh bloben. Du kan behöva ändra lagrings-URI-suffixet beroende på vilket moln du befinner dig i. Följande installeras i AzureCloud:

az extension add --source https://acrtransferext.blob.core.windows.net/dist/acrtransfer-1.0.0-py2.py3-none-any.whl

Skapa ExportPipeline med az CLI-tillägget acrtransfer

Skapa en ExportPipeline-resurs för ditt AzureCloud-containerregister med az CLI-tillägget acrtransfer.

Skapa en exportpipeline utan alternativ och en systemtilldelad identitet:

az acr export-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer

Skapa en exportpipeline med alla möjliga alternativ och en användartilldelad identitet:

az acr export-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer \
--options OverwriteBlobs ContinueOnErrors \
--assign-identity /subscriptions/$MySubID/resourceGroups/$MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$MyIdentity

Exportalternativ

Egenskapen options för exportpipelines stöder valfria booleska värden. Följande värden rekommenderas:

Parameter Värde
alternativ OverwriteBlobs – Skriv över befintliga målblobar
ContinueOnErrors – Fortsätt exportera återstående artefakter i källregistret om en artefaktexport misslyckas.

Ge exportpipeline-identiteten nyckelvalvsprincipåtkomst

Om du har skapat din pipeline med en användartilldelad identitet ger du bara den här användartilldelade principbehörigheten för identitetsåtkomst secret get på keyvault.If you created your pipeline with a user-assigned identity access policy permissions on the keyvault.

Om du har skapat din pipeline med en systemtilldelad identitet måste du först hämta det principalId som systemet har tilldelat din pipelineresurs.

Kör följande kommando för att hämta pipelineresursen:

az acr export-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline

Från dessa utdata vill du kopiera värdet i fältet principalId .

Sedan kör du följande kommando för att ge det här huvudkontot rätt secret get behörigheter för åtkomstprincip på din keyvault.

az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID

Skapa ImportPipeline med az CLI-tillägget acrtransfer

Skapa en ImportPipeline-resurs i målcontainerregistret med az CLI-tillägget acrtransfer. Som standard är pipelinen aktiverad för att skapa en Import PipelineRun automatiskt när containern för det anslutna lagringskontot tar emot en ny artefaktblob.

Skapa en importpipeline utan alternativ och en systemtilldelad identitet:

az acr import-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer

Skapa en importpipeline med alla möjliga alternativ, källutlösaren inaktiverad och en användartilldelad identitet:

az acr import-pipeline create \
--resource-group $MyRG \
--registry $MyReg \
--name $MyPipeline \
--secret-uri https://$MyKV.vault.azure.net/secrets/$MySecret \
--storage-container-uri https://$MyStorage.blob.core.windows.net/$MyContainer \
--options DeleteSourceBlobOnSuccess OverwriteTags ContinueOnErrors \
--assign-identity /subscriptions/$MySubID/resourceGroups/$MyRG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$MyIdentity \
--source-trigger-enabled False

Importalternativ

Egenskapen options för importpipelinen stöder valfria booleska värden. Följande värden rekommenderas:

Parameter Värde
alternativ OverwriteTags – Skriv över befintliga måltaggar
DeleteSourceBlobOnSuccess – Ta bort källlagringsbloben efter lyckad import till målregistret
ContinueOnErrors – Fortsätt importera återstående artefakter i målregistret om en artefaktimport misslyckas.

Ge importpipeline-identiteten nyckelvalvsprincipåtkomst

Om du har skapat din pipeline med en användartilldelad identitet ger du bara den här användartilldelade principbehörigheten för identitetsåtkomst secret get på keyvault.If you created your pipeline with a user-assigned identity access policy permissions on the keyvault.

Om du har skapat din pipeline med en systemtilldelad identitet måste du först hämta det principalId som systemet har tilldelat din pipelineresurs.

Kör följande kommando för att hämta pipelineresursen:

az acr import-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline

Från dessa utdata vill du kopiera värdet i fältet principalId .

Sedan kör du följande kommando för att ge det här huvudkontot rätt secret get åtkomstprincip på din keyvault.

az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID

Skapa PipelineRun för export med az CLI-tillägget acrtransfer

Skapa en PipelineRun-resurs för containerregistret med az CLI-tillägget acrtransfer. Den här resursen kör den ExportPipeline-resurs som du skapade tidigare och exporterar angivna artefakter från containerregistret som en blob till lagringskontocontainern.

Skapa en exportpipelinekörning:

az acr pipeline-run create \
--resource-group $MyRG \
--registry $MyReg \
--pipeline $MyPipeline \
--name $MyPipelineRun \
--pipeline-type export \
--storage-blob $MyBlob \
--artifacts hello-world:latest hello-world@sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042 \
--force-redeploy

Om du distribuerar om en PipelineRun-resurs med identiska egenskaper måste du använda flaggan --force-redeploy.

Det kan ta flera minuter innan artefakter exporteras. När distributionen är klar kontrollerar du artefaktexporten genom att visa en lista över den exporterade bloben i containern för källlagringskontot. Kör till exempel kommandot az storage blob list :

az storage blob list --account-name $MyStorageAccount --container $MyContainer --output table

Överföra blob över domän

I de flesta användningsfall använder du nu en lösning mellan domäner eller en annan metod för att överföra bloben från lagringskontot i källdomänen (lagringskontot som är associerat med exportpipelinen) till lagringskontot i måldomänen (lagringskontot som är associerat med din importpipeline). Nu förutsätter vi att blobben har anlänt till måldomänlagringskontot som är associerat med din importpipeline.

Utlösa ImportPipeline-resurs

Om du inte använde parametern --source-trigger-enabled False när du skapade din importpipeline utlöses pipelinen inom 15 minuter efter att bloben har anlänt till containern för lagringskontot. Det kan ta flera minuter innan artefakter importeras. När importen har slutförts kontrollerar du artefaktimporten genom att visa taggarna på den lagringsplats som du importerar i målcontainerregistret. Kör till exempel az acr repository show-tags:

az acr repository show-tags --name $MyRegistry --repository $MyRepository

Kommentar

Källutlösaren importerar endast blobar som har en senast ändrad tid under de senaste 60 dagarna. Om du tänker använda källutlösare för att importera blobar som är äldre än så uppdaterar du tiden för blobarna senast ändrade genom att lägga till blobmetadata i dem eller importera dem med manuellt skapade pipelinekörningar.

Om du använde parametern --source-trigger-enabled False när du skapade ImportPipeline måste du skapa en PipelineRun manuellt, som du ser i följande avsnitt.

Skapa PipelineRun för import med az CLI-tillägget acrtransfer

Skapa en PipelineRun-resurs för containerregistret med az CLI-tillägget acrtransfer. Den här resursen kör den ImportPipeline-resurs som du skapade tidigare och importerar angivna blobar från ditt lagringskonto till containerregistret.

Skapa en importpipelinekörning:

az acr pipeline-run create \
--resource-group $MyRG \
--registry $MyReg \
--pipeline $MyPipeline \
--name $MyPipelineRun \
--pipeline-type import \
--storage-blob $MyBlob \
--force-redeploy

Om du distribuerar om en PipelineRun-resurs med identiska egenskaper måste du använda flaggan --force-redeploy.

Det kan ta flera minuter innan artefakter importeras. När importen har slutförts kontrollerar du artefaktimporten genom att visa en lista över lagringsplatserna i målcontainerregistret. Kör till exempel az acr repository show-tags:

az acr repository show-tags --name $MyRegistry --repository $MyRepository

Ta bort ACR-överföringsresurser

Ta bort en ExportPipeline:

az acr export-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline

Ta bort en ImportPipeline:

az acr import-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline

Ta bort en PipelineRun-resurs. Observera att detta inte omvänt den åtgärd som utförs av PipelineRun. Det här är mer som att ta bort loggen för PipelineRun.

az acr pipeline-run delete --resource-group $MyRG --registry $MyReg --name $MyPipelineRun

Felsökning av ACR-överföring

Visa felsökning av ACR-överföring för felsökningsvägledning.

Nästa steg