Dela via


Överföra artefakter till ett annat register

Den här artikeln visar hur du överför samlingar av avbildningar eller andra registerartefakter från ett Azure-containerregister till ett annat register. Käll- och målregistren kan finnas i samma eller olika prenumerationer, Active Directory-klientorganisationer, Azure-moln eller fysiskt frånkopplade moln.

Om du vill överföra artefakter skapar du en överföringspipeline som replikerar artefakter mellan två register med hjälp av bloblagring:

  • Artefakter från ett källregister exporteras till en blob i ett källlagringskonto
  • Blobben kopieras från källlagringskontot till ett mållagringskonto
  • Blobben i mållagringskontot importeras som artefakter i målregistret. Du kan konfigurera importpipelinen så att den utlöses när artefaktbloben uppdateras i mållagringen.

I den här artikeln skapar du nödvändiga resurser för att skapa och köra överföringspipelinen. Azure CLI används för att etablera associerade resurser, till exempel lagringshemligheter. Azure CLI version 2.2.0 eller senare rekommenderas. Om du behöver installera eller uppgradera CLI kan du läsa mer i Installera Azure CLI.

Den här funktionen är tillgänglig på tjänstnivån för Premium-containerregistret . Information om registertjänstnivåer och gränser finns i Azure Container Registry-nivåer.

Viktigt!

Den här funktionen finns i förhandsgranskning. Förhandsversioner är tillgängliga för dig under förutsättning att du godkänner de kompletterande användningsvillkoren. Vissa aspekter av funktionen kan ändras innan den är allmänt tillgänglig (GA).

Överväg ditt användningsfall

Överföring är perfekt för att kopiera innehåll mellan två Azure-containerregister i fysiskt frånkopplade moln som förmedlas av lagringskonton i varje moln. Om du i stället vill kopiera avbildningar från containerregister i anslutna moln, inklusive Docker Hub och andra molnleverantörer, rekommenderas avbildningsimport .

Förutsättningar

  • Containerregister – Du behöver ett befintligt källregister med artefakter att överföra och ett målregister. ACR-överföring är avsedd för förflyttning över fysiskt frånkopplade moln. För testning kan käll- och målregister finnas i samma eller en annan Azure-prenumeration, Active Directory-klientorganisation eller moln.

    Om du behöver skapa ett register kan du läsa Snabbstart: Skapa ett privat containerregister med hjälp av Azure CLI.

  • Lagringskonton – Skapa käll- och mållagringskonton i en prenumeration och valfri plats. I testsyfte kan du använda samma prenumeration eller prenumerationer som dina käll- och målregister. För scenarier mellan moln skapar du vanligtvis ett separat lagringskonto i varje moln.

    Om det behövs skapar du lagringskontona med Azure CLI eller andra verktyg.

    Skapa en blobcontainer för artefaktöverföring i varje konto. Skapa till exempel en container med namnet transfer.

  • Nyckelvalv – Nyckelvalv behövs för att lagra SAS-tokenhemligheter som används för åtkomst till käll- och mållagringskonton. Skapa käll- och målnyckelvalv i samma Azure-prenumeration eller prenumerationer som dina käll- och målregister. I demonstrationssyfte förutsätter de mallar och kommandon som används i den här artikeln också att käll- och målnyckelvalv finns i samma resursgrupper som käll- respektive målregistren. Den här användningen av vanliga resursgrupper krävs inte, men det förenklar de mallar och kommandon som används i den här artikeln.

    Om det behövs skapar du nyckelvalv med Azure CLI eller andra verktyg.

  • Miljövariabler – Till exempel kommandon i den här artikeln anger du följande miljövariabler för käll- och målmiljöerna. Alla exempel är formaterade för Bash-gränssnittet.

    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>"
    

Scenarioöversikt

Du skapar följande tre pipelineresurser för avbildningsöverföring mellan register. Alla skapas med PUT-åtgärder. Dessa resurser fungerar på dina käll- och målregister och lagringskonton.

Lagringsautentisering använder SAS-token som hanteras som hemligheter i nyckelvalv. Pipelines använder hanterade identiteter för att läsa hemligheterna i valven.

  • ExportPipeline – långvarig resurs som innehåller information på hög nivå om källregistret och lagringskontot. Den här informationen innehåller URI:n för blobcontainern för källlagring och nyckelvalvet som hanterar SAS-källtoken.
  • ImportPipeline – långvarig resurs som innehåller information på hög nivå om målregistret och lagringskontot. Den här informationen innehåller URI:n för blobcontainern för mållagring och nyckelvalvet som hanterar SAS-måltoken. En importutlösare är aktiverad som standard, så pipelinen körs automatiskt när en artefaktblob hamnar i mållagringscontainern.
  • PipelineRun – resurs som används för att anropa antingen en ExportPipeline- eller ImportPipeline-resurs.
    • Du kör ExportPipeline manuellt genom att skapa en PipelineRun-resurs och ange de artefakter som ska exporteras.
    • Om en importutlösare är aktiverad körs ImportPipeline automatiskt. Det kan också köras manuellt med hjälp av en PipelineRun.
    • För närvarande kan högst 50 artefakter överföras med varje PipelineRun.

Bra att känna till

  • ExportPipeline och ImportPipeline finns vanligtvis i olika Active Directory-klienter som är associerade med käll- och målmoln. Det här scenariot kräver separata hanterade identiteter och nyckelvalv för export- och importresurserna. I testsyfte kan dessa resurser placeras i samma moln och dela identiteter.
  • Som standard aktiverar ExportPipeline- och ImportPipeline-mallarna var och en systemtilldelad hanterad identitet för åtkomst till key vault-hemligheter. Mallarna ExportPipeline och ImportPipeline stöder också en användartilldelad identitet som du anger.

Skapa och lagra SAS-nycklar

Överföring använder SAS-token (signatur för delad åtkomst) för att komma åt lagringskontona i käll- och målmiljöerna. Generera och lagra token enligt beskrivningen i följande avsnitt.

Viktigt!

Även om ACR Transfer fungerar med en manuellt genererad SAS-token som lagras i en Keyvault-hemlighet, rekommenderar vi starkt att du använder Keyvault Managed Storage SAS Definition Secrets i stället för produktionsarbetsbelastningar.

Generera SAS-token för export

Kör kommandot az storage container generate-sas för att generera en SAS-token för containern i källlagringskontot som används för artefaktexport.

Rekommenderade tokenbehörigheter: Läsa, Skriva, Lista, Lägg till.

I följande exempel tilldelas kommandoutdata till miljövariabeln EXPORT_SAS, prefixet med tecknet ?. --expiry Uppdatera värdet för din miljö:

EXPORT_SAS=?$(az storage container generate-sas \
  --name transfer \
  --account-name $SOURCE_SA \
  --expiry 2021-01-01 \
  --permissions alrw \
  --https-only \
  --output tsv)

Lagra SAS-token för export

Lagra SAS-token i azure-nyckelvalvet för källan med hjälp av az keyvault secret set:

az keyvault secret set \
  --name acrexportsas \
  --value $EXPORT_SAS \
  --vault-name $SOURCE_KV

Generera SAS-token för import

Kör kommandot az storage container generate-sas för att generera en SAS-token för containern i mållagringskontot som används för artefaktimport.

Rekommenderade tokenbehörigheter: Läsa, Ta bort, Lista

I följande exempel tilldelas kommandoutdata till miljövariabeln IMPORT_SAS, prefixet med tecknet ?. --expiry Uppdatera värdet för din miljö:

IMPORT_SAS=?$(az storage container generate-sas \
  --name transfer \
  --account-name $TARGET_SA \
  --expiry 2021-01-01 \
  --permissions dlr \
  --https-only \
  --output tsv)

Lagra SAS-token för import

Lagra SAS-token i ditt Azure-målnyckelvalv med az keyvault secret set:

az keyvault secret set \
  --name acrimportsas \
  --value $IMPORT_SAS \
  --vault-name $TARGET_KV

Nästa steg