Delen via


Artefacten overdragen naar een ander register

In dit artikel wordt beschreven hoe u verzamelingen installatiekopieën of andere registerartefacten van het ene Azure-containerregister naar een ander register overdraagt. De bron- en doelregisters kunnen zich in dezelfde of verschillende abonnementen bevinden, Active Directory-tenants, Azure-clouds of fysiek verbroken clouds.

Als u artefacten wilt overdragen, maakt u een overdrachtspijplijn waarmee artefacten tussen twee registers worden gerepliceerd met behulp van blobopslag:

  • Artefacten uit een bronregister worden geëxporteerd naar een blob in een bronopslagaccount
  • De blob wordt gekopieerd van het bronopslagaccount naar een doelopslagaccount
  • De blob in het doelopslagaccount wordt geïmporteerd als artefacten in het doelregister. U kunt de importpijplijn zo instellen dat deze wordt geactiveerd wanneer de artefact-blob wordt bijgewerkt in de doelopslag.

In dit artikel maakt u de vereiste resources om de overdrachtspijplijn te maken en uit te voeren. De Azure CLI wordt gebruikt voor het inrichten van de gekoppelde resources, zoals opslaggeheimen. Azure CLI versie 2.2.0 of hoger wordt aanbevolen. Als u de CLI wilt installeren of upgraden, raadpleegt u Azure CLI installeren.

Deze functie is beschikbaar in de servicelaag Premium-containerregister . Zie Azure Container Registry-lagen voor informatie over registerservicelagen en -limieten.

Belangrijk

Deze functie is momenteel beschikbaar in preview. Previews worden voor u beschikbaar gesteld op voorwaarde dat u akkoord gaat met de aanvullende gebruiksvoorwaarden. Sommige aspecten van deze functie worden mogelijk nog gewijzigd voordat de functie algemeen beschikbaar wordt.

Houd rekening met uw use-case

Overdracht is ideaal voor het kopiëren van inhoud tussen twee Azure-containerregisters in fysiek losgekoppelde clouds, gemediateerd door opslagaccounts in elke cloud. Als u in plaats daarvan installatiekopieën wilt kopiëren uit containerregisters in verbonden clouds, waaronder Docker Hub en andere cloudleveranciers, wordt het importeren van installatiekopieën aanbevolen.

Vereisten

  • Containerregisters : u hebt een bestaand bronregister met artefacten nodig om over te dragen en een doelregister. ACR-overdracht is bedoeld voor beweging tussen fysiek losgekoppelde clouds. Voor het testen kunnen de bron- en doelregisters zich in hetzelfde of een ander Azure-abonnement, Active Directory-tenant of in de cloud bevinden.

    Als u een register wilt maken, raadpleegt u quickstart: Een privécontainerregister maken met behulp van de Azure CLI.

  • Opslagaccounts : maak bron- en doelopslagaccounts in een abonnement en locatie van uw keuze. Voor testdoeleinden kunt u hetzelfde abonnement of dezelfde abonnementen gebruiken als uw bron- en doelregisters. Voor scenario's tussen clouds maakt u doorgaans een afzonderlijk opslagaccount in elke cloud.

    Maak indien nodig de opslagaccounts met de Azure CLI of andere hulpprogramma's.

    Maak een blobcontainer voor artefactoverdracht in elk account. Maak bijvoorbeeld een container met de naam Transfer.

  • Sleutelkluizen: sleutelkluizen zijn nodig om SAS-tokengeheimen op te slaan die worden gebruikt voor toegang tot bron- en doelopslagaccounts. Maak de bron- en doelsleutelkluizen in hetzelfde Azure-abonnement of -abonnementen als uw bron- en doelregisters. Voor demonstratiedoeleinden gaan de sjablonen en opdrachten die in dit artikel worden gebruikt ook ervan uit dat de bron- en doelsleutelkluizen zich in dezelfde resourcegroepen bevinden als respectievelijk de bron- en doelregisters. Dit gebruik van algemene resourcegroepen is niet vereist, maar vereenvoudigt de sjablonen en opdrachten die in dit artikel worden gebruikt.

    Maak indien nodig sleutelkluizen met de Azure CLI of andere hulpprogramma's.

  • Omgevingsvariabelen : stel bijvoorbeeld opdrachten in dit artikel de volgende omgevingsvariabelen in voor de bron- en doelomgevingen. Alle voorbeelden zijn opgemaakt voor de Bash-shell.

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

Overzicht van scenario

U maakt de volgende drie pijplijnbronnen voor de overdracht van installatiekopieën tussen registers. Alle bewerkingen worden gemaakt met behulp van PUT-bewerkingen. Deze resources werken op uw bron - en doelregisters en -opslagaccounts.

Opslagverificatie maakt gebruik van SAS-tokens, beheerd als geheimen in sleutelkluizen. De pijplijnen gebruiken beheerde identiteiten om de geheimen in de kluizen te lezen.

  • ExportPipeline : langdurige resource met informatie op hoog niveau over het bronregister en het opslagaccount. Deze informatie omvat de URI van de bronopslag-blobcontainer en de sleutelkluis die het SAS-brontoken beheert.
  • ImportPipeline : langdurige resource die informatie op hoog niveau bevat over het doelregister en het opslagaccount. Deze informatie omvat de blobcontainer-URI van de doelopslag en de sleutelkluis die het SAS-doeltoken beheert. Een importtrigger is standaard ingeschakeld, dus de pijplijn wordt automatisch uitgevoerd wanneer een artefact-blob in de doelopslagcontainer terechtkomt.
  • PipelineRun : resource die wordt gebruikt om een ExportPipeline- of ImportPipeline-resource aan te roepen.
    • U voert de ExportPipeline handmatig uit door een PipelineRun-resource te maken en de artefacten op te geven die u wilt exporteren.
    • Als een importtrigger is ingeschakeld, wordt de ImportPipeline automatisch uitgevoerd. Het kan ook handmatig worden uitgevoerd met behulp van een PipelineRun.
    • Momenteel kunnen maximaal 50 artefacten worden overgedragen met elke PipelineRun.

Goed om te weten

  • De ExportPipeline en ImportPipeline bevinden zich doorgaans in verschillende Active Directory-tenants die zijn gekoppeld aan de bron- en doelclouds. Voor dit scenario zijn afzonderlijke beheerde identiteiten en sleutelkluizen vereist voor het exporteren en importeren van resources. Voor testdoeleinden kunnen deze resources in dezelfde cloud worden geplaatst, waarbij identiteiten worden gedeeld.
  • Standaard kunnen met de sjablonen ExportPipeline en ImportPipeline een door het systeem toegewezen beheerde identiteit toegang krijgen tot sleutelkluisgeheimen. De sjablonen ExportPipeline en ImportPipeline ondersteunen ook een door de gebruiker toegewezen identiteit die u opgeeft.

SAS-sleutels maken en opslaan

Overdracht maakt gebruik van SAS-tokens (Shared Access Signature) voor toegang tot de opslagaccounts in de bron- en doelomgevingen. Tokens genereren en opslaan zoals beschreven in de volgende secties.

Belangrijk

Hoewel ACR Transfer werkt met een handmatig gegenereerd SAS-token dat is opgeslagen in een Keyvault-geheim, raden we voor productieworkloads ten zeerste aan om in plaats daarvan sas-definitiegeheimen van Keyvault Managed Storage te gebruiken.

SAS-token genereren voor export

Voer de opdracht az storage container generate-sas uit om een SAS-token te genereren voor de container in het bronopslagaccount, dat wordt gebruikt voor het exporteren van artefacten.

Aanbevolen tokenmachtigingen: Lezen, Schrijven, Lijst, Toevoegen.

In het volgende voorbeeld wordt de opdrachtuitvoer toegewezen aan de omgevingsvariabele EXPORT_SAS, voorafgegaan door het teken '?'. Werk de --expiry waarde voor uw omgeving bij:

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

SAS-token opslaan voor export

Sla het SAS-token op in uw azure-bronsleutelkluis met behulp van az keyvault secret set:

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

SAS-token genereren voor importeren

Voer de opdracht az storage container generate-sas uit om een SAS-token te genereren voor de container in het doelopslagaccount dat wordt gebruikt voor het importeren van artefacten.

Aanbevolen tokenmachtigingen: Lezen, Verwijderen, Lijst

In het volgende voorbeeld wordt de opdrachtuitvoer toegewezen aan de omgevingsvariabele IMPORT_SAS, voorafgegaan door het teken '?'. Werk de --expiry waarde voor uw omgeving bij:

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

SAS-token opslaan voor importeren

Sla het SAS-token op in uw Azure-doelsleutelkluis met behulp van az keyvault secret set:

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

Volgende stappen