ACR-overdracht met Az CLI
In dit artikel wordt beschreven hoe u de functie ACR Transfer gebruikt met de az CLI-extensie acrtransfer.
Vereisten voltooien
Voltooi de vereisten die hier worden beschreven voordat u de acties in dit artikel uitvoert. Dit betekent het volgende:
- U hebt een bestaand Premium SKU-register in beide clouds.
- U hebt een bestaande opslagaccountcontainer in beide clouds.
- U hebt een bestaande Sleutelkluis met een geheim met een geldig SAS-token met de benodigde machtigingen in beide clouds.
- U hebt een recente versie van Az CLI geïnstalleerd in beide clouds.
De Az CLI-extensie installeren
In AzureCloud kunt u de extensie installeren met de volgende opdracht:
az extension add --name acrtransfer
In AzureCloud en andere clouds kunt u de blob rechtstreeks vanuit een openbare opslagaccountcontainer installeren. De blob wordt gehost in het opslagaccount, dist
de container, acrtransfer-1.0.0-py2.py3-none-any.wh
de acrtransferext
blob. Mogelijk moet u het achtervoegsel van de opslag-URI wijzigen, afhankelijk van de cloud waarin u zich bevindt. Het volgende wordt geïnstalleerd in AzureCloud:
az extension add --source https://acrtransferext.blob.core.windows.net/dist/acrtransfer-1.0.0-py2.py3-none-any.whl
ExportPipeline maken met de az CLI-extensie acrtransfer
Maak een ExportPipeline-resource voor uw AzureCloud-containerregister met behulp van de az CLI-extensie acrtransfer.
Maak een exportpijplijn zonder opties en een door het systeem toegewezen identiteit:
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
Maak een exportpijplijn met alle mogelijke opties en een door de gebruiker toegewezen identiteit:
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
Opties voor exporteren
De options
eigenschap voor de exportpijplijnen ondersteunt optionele Booleaanse waarden. De volgende waarden worden aanbevolen:
Parameter | Weergegeven als |
---|---|
Opties | Overschrijvenblobs - Bestaande doel-blobs overschrijven ContinueOnErrors: doorgaan met het exporteren van resterende artefacten in het bronregister als het exporteren van één artefact mislukt. |
Toegang tot het keyvault-beleid voor de ExportPipeline-identiteit geven
Als u uw pijplijn hebt gemaakt met een door de gebruiker toegewezen identiteit, geeft u deze door de gebruiker toegewezen toegangsbeleidsmachtigingen secret get
voor identiteiten op de sleutelkluis.
Als u uw pijplijn hebt gemaakt met een door het systeem toegewezen identiteit, moet u eerst de principalId ophalen die het systeem heeft toegewezen aan uw pijplijnresource.
Voer de volgende opdracht uit om uw pijplijnresource op te halen:
az acr export-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline
In deze uitvoer wilt u de waarde in het principalId
veld kopiëren.
Vervolgens voert u de volgende opdracht uit om deze principal de juiste secret get
toegangsbeleidsmachtigingen voor uw sleutelkluis te geven.
az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID
ImportPipeline maken met de az CLI-extensie acrtransfer
Maak een ImportPipeline-resource in uw doelcontainerregister met behulp van de az CLI-extensie acrtransfer. De pijplijn is standaard ingeschakeld om automatisch een Import PipelineRun te maken wanneer de gekoppelde opslagaccountcontainer een nieuwe artefact-blob ontvangt.
Maak een importpijplijn zonder opties en een door het systeem toegewezen identiteit:
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
Maak een importpijplijn met alle mogelijke opties, brontrigger uitgeschakeld en een door de gebruiker toegewezen identiteit:
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
Opties voor importeren
De options
eigenschap voor de importpijplijn ondersteunt optionele Booleaanse waarden. De volgende waarden worden aanbevolen:
Parameter | Weergegeven als |
---|---|
Opties | Overschrijftags - Bestaande doeltags overschrijven DeleteSourceBlobOnSuccess - Verwijder de bronopslag-blob na het importeren in het doelregister ContinueOnErrors: doorgaan met het importeren van resterende artefacten in het doelregister als het importeren van één artefact mislukt. |
Toegang tot het keyvault-beleid voor de ImportPipeline-identiteit geven
Als u uw pijplijn hebt gemaakt met een door de gebruiker toegewezen identiteit, geeft u deze door de gebruiker toegewezen toegangsbeleidsmachtigingen secret get
voor identiteiten op de sleutelkluis.
Als u uw pijplijn hebt gemaakt met een door het systeem toegewezen identiteit, moet u eerst de principalId ophalen die het systeem heeft toegewezen aan uw pijplijnresource.
Voer de volgende opdracht uit om uw pijplijnresource op te halen:
az acr import-pipeline show --resource-group $MyRG --registry $MyReg --name $MyPipeline
In deze uitvoer wilt u de waarde in het principalId
veld kopiëren.
Vervolgens voert u de volgende opdracht uit om deze principal het juiste secret get
toegangsbeleid voor uw sleutelkluis te geven.
az keyvault set-policy --name $MyKeyvault --secret-permissions get --object-id $MyPrincipalID
PipelineRun maken voor export met de az CLI-extensie acrtransfer
Maak een PipelineRun-resource voor uw containerregister met behulp van de az CLI-extensie acrtransfer. Deze resource voert de ExportPipeline-resource uit die u eerder hebt gemaakt en exporteert opgegeven artefacten uit uw containerregister als blob naar uw opslagaccountcontainer.
Een exportpijplijnuitvoering maken:
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
Als u een PipelineRun-resource opnieuw implementeert met identieke eigenschappen, moet u de vlag --force-redeploy gebruiken.
Het kan enkele minuten duren voordat artefacten zijn geëxporteerd. Wanneer de implementatie is voltooid, controleert u het exporteren van artefacten door de geëxporteerde blob in de container van het bronopslagaccount te vermelden. Voer bijvoorbeeld de opdracht az storage blob list uit:
az storage blob list --account-name $MyStorageAccount --container $MyContainer --output table
Blob overdragen tussen domeinen
In de meeste gevallen gebruikt u nu een oplossing voor meerdere domeinen of een andere methode om uw blob over te dragen van het opslagaccount in uw brondomein (het opslagaccount dat is gekoppeld aan uw exportpijplijn) naar het opslagaccount in uw doeldomein (het opslagaccount dat is gekoppeld aan uw importpijplijn). Op dit moment gaan we ervan uit dat de blob is aangekomen in het doeldomeinopslagaccount dat is gekoppeld aan uw importpijplijn.
ImportPipeline-resource activeren
Als u de parameter niet hebt gebruikt bij het maken van de --source-trigger-enabled False
importpijplijn, wordt de pijplijn binnen 15 minuten nadat de blob binnenkomt in de container van het opslagaccount geactiveerd. Het kan enkele minuten duren voordat artefacten zijn geïmporteerd. Wanneer het importeren is voltooid, controleert u het importeren van artefacten door de tags op te vermelden in de opslagplaats die u in het doelcontainerregister importeert. Voer bijvoorbeeld az acr repository show-tags uit:
az acr repository show-tags --name $MyRegistry --repository $MyRepository
Notitie
Brontrigger importeert alleen blobs met een tijd voor laatst gewijzigd binnen de afgelopen 60 dagen. Als u van plan bent om brontriggers te gebruiken om blobs ouder te importeren, vernieuwt u de tijd van de laatste wijziging van de blobs door er blobmetagegevens aan toe te voegen of importeert u deze met handmatig gemaakte pijplijnuitvoeringen.
Als u de parameter hebt gebruikt bij het --source-trigger-enabled False
maken van uw ImportPipeline, moet u handmatig een PipelineRun maken, zoals wordt weergegeven in de volgende sectie.
PipelineRun maken voor importeren met de az CLI-extensie acrtransfer
Maak een PipelineRun-resource voor uw containerregister met behulp van de az CLI-extensie acrtransfer. Deze resource voert de ImportPipeline-resource uit die u eerder hebt gemaakt en importeert opgegeven blobs uit uw opslagaccount in het containerregister.
Een importpijplijnuitvoering maken:
az acr pipeline-run create \
--resource-group $MyRG \
--registry $MyReg \
--pipeline $MyPipeline \
--name $MyPipelineRun \
--pipeline-type import \
--storage-blob $MyBlob \
--force-redeploy
Als u een PipelineRun-resource opnieuw implementeert met identieke eigenschappen, moet u de vlag --force-redeploy gebruiken.
Het kan enkele minuten duren voordat artefacten zijn geïmporteerd. Wanneer het importeren is voltooid, controleert u het importeren van artefacten door de opslagplaatsen in het doelcontainerregister weer te laten zien. Voer bijvoorbeeld az acr repository show-tags uit:
az acr repository show-tags --name $MyRegistry --repository $MyRepository
ACR-overdrachtsbronnen verwijderen
Een ExportPipeline verwijderen:
az acr export-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline
Een ImportPipeline verwijderen:
az acr import-pipeline delete --resource-group $MyRG --registry $MyReg --name $MyPipeline
Een PipelineRun-resource verwijderen. Houd er rekening mee dat hiermee de actie die door de PipelineRun wordt uitgevoerd, niet ongedaan wordt gemaakt. Dit lijkt meer op het verwijderen van het logboek van de PipelineRun.
az acr pipeline-run delete --resource-group $MyRG --registry $MyReg --name $MyPipelineRun
Problemen met ACR Transfer oplossen
Bekijk ACR Transfer Troubleshooting voor richtlijnen voor probleemoplossing.
Volgende stappen
- Meer informatie over het blokkeren van het maken van exportpijplijnen uit een containerregister met netwerkbeperking.