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
- Lär dig hur du blockerar skapandet av exportpipelines från ett nätverksbegränsat containerregister.