Flytta ett containerregister manuellt till en annan region

Du kan behöva flytta ett Azure-containerregister från en Azure-region till en annan. Du kan till exempel köra en utvecklingspipeline eller vara värd för ett nytt distributionsmål i en annan region och ange ett närliggande register.

Azure Resource Mover kan för närvarande inte automatisera en flytt för ett Azure-containerregister, men du kan flytta ett containerregister manuellt till en annan region:

  • Exportera registerinställningar till en Resource Manager mall
  • Använd mallen för att distribuera ett register i en annan Azure-region
  • Importera registerinnehåll från källregistret till målregistret

Anteckning

Om du behöver distribuera identiska containeravbildningar över flera Azure-regioner stöder Azure Container Registry även geo-replikering. Genom att georeplikera ett register (premiumtjänstnivån krävs) kan du hantera flera regioner med identiska avbildnings- och taggnamn från ett enda register.

Förutsättningar

Azure CLI

Överväganden

  • Använd stegen i den här artikeln för att flytta registret till en annan region i samma prenumeration. Det kan krävas mer konfiguration för att flytta ett register till en annan Azure-prenumeration i samma Active Directory-klientorganisation.
  • Om du exporterar och använder en Resource Manager mall kan du återskapa många registerinställningar. Du kan redigera mallen för att konfigurera fler inställningar eller uppdatera målregistret när du har skapat den.
  • För närvarande stöder Azure Container Registry inte en registerflytt till en annan Active Directory-klientorganisation. Den här begränsningen gäller både register som krypterats med en kundhanterad nyckel och okrypterade register.
  • Om du inte kan flytta ett register beskrivs i den här artikeln skapar du ett nytt register, återskapar inställningarna manuellt och importerar registerinnehåll i målregistret.
  • Du hittar stegen för att flytta registerresurser till en ny resursgrupp i samma prenumeration eller flytta resurser till en ny prenumeration.

Exportera mall från källregistret

Använd Azure Portal, Azure CLI, Azure PowerShell eller andra Azure-verktyg för att exportera en Resource Manager mall. Så här använder du Azure Portal:

  1. I Azure Portal går du till källregistret.

  2. På menyn, under Automation, väljer du Exportera mall>Ladda ned.

    Exportera mall för containerregister

Distribuera om målregistret i en ny region

Ändra mall

Granska registeregenskaperna i JSON-mallfilen som du laddade ned och gör nödvändiga ändringar. Minst:

  • Ändra registernamnets defaultValue till önskat namn på målregistret
  • location Uppdatera till önskad Azure-region för målregistret
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "registries_myregistry_name": {
            "defaultValue": "myregistry",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.ContainerRegistry/registries",
            "apiVersion": "2020-11-01-preview",
            "name": "[parameters('myregistry_name')]",
            "location": "centralus",
        ...
        }
    ]
}

Mer information finns i Använda exporterad mall från Azure Portal och mallreferensen.

Viktigt

Om du vill kryptera målregistret med hjälp av en kundhanterad nyckel måste du uppdatera mallen med inställningar för den hanterade identitet, nyckelvalv och nyckel som krävs. Du kan bara aktivera den kundhanterade nyckeln när du distribuerar registret.

Mer information finns i Kryptera registret med kundhanterad nyckel.

Skapa resursgrupp

Skapa en resursgrupp för målregistret med hjälp av az group create. I följande exempel skapas en resursgrupp med namnet myResourceGroup på platsen eastus.

az group create --name myResourceGroup --location eastus

Distribuera målregistret i en ny region

Använd kommandot az deployment group create för att distribuera målregistret med hjälp av mallen:

az deployment group create --resource-group myResourceGroup \
   --template-file template.json --name mydeployment

Anteckning

Om du ser fel under distributionen kan du behöva uppdatera vissa konfigurationer i mallfilen och försöka köra kommandot igen.

Importera registerinnehåll i målregistret

När du har skapat registret i målregionen använder du kommandot az acr import eller motsvarande PowerShell-kommando Import-AzContainerImageför att importera avbildningar och andra artefakter som du vill bevara från källregistret till målregistret. Kommandoexempel finns i Importera containeravbildningar till ett containerregister.

  • Använd Azure CLI-kommandona az acr repository list och az acr repository show-tags, eller Azure PowerShell motsvarigheter, för att räkna upp innehållet i källregistret.
  • Kör importkommandot för enskilda artefakter eller kör skriptet för att köra över en lista med artefakter.

Följande Azure CLI-exempelskript räknar upp källlagringsplatserna och taggarna och importerar sedan artefakterna till ett målregister i samma Azure-prenumeration. Ändra efter behov för att importera specifika lagringsplatser eller taggar. Information om hur du importerar från ett register i en annan prenumeration eller klientorganisation finns i exempel i Importera containeravbildningar till ett containerregister.

#!/bin/bash
# Modify registry names for your environment
SOURCE_REG=myregistry
TARGET_REG=targetregistry

# Get list of source repositories
REPO_LIST=$(az acr repository list \
    --name $SOURCE_REG --output tsv)

# Enumerate tags and import to target registry
for repo in $REPO_LIST; do
    TAGS_LIST=$(az acr repository show-tags --name $SOURCE_REG --repository $repo --output tsv);
    for tag in $TAGS_LIST; do
        echo "Importing $repo:$tag";
        az acr import --name $TARGET_REG --source $SOURCE_REG.azurecr.io/$repo":"$tag;
    done
done

Verifiera målregistret

Bekräfta följande information i målregistret:

  • Registerinställningar som registernamn, tjänstnivå, offentlig åtkomst och replikering
  • Lagringsplatser och taggar för innehåll som du vill bevara.

Ytterligare konfiguration

  • Vid behov konfigurerar du inställningarna manuellt i målregistret, till exempel privata slutpunkter, IP-åtkomstregler och hanterade identiteter.

  • Uppdatera utvecklings- och distributionssystem för att använda målregistret i stället för källregistret.

  • Uppdatera eventuella brandväggsregler för klienter så att de tillåter åtkomst till målregistret.

Ta bort ursprungligt register

När du har distribuerat målregistret, migrerat innehåll och verifierat registerinställningar kan du ta bort källregistret.

Nästa steg