Spostare manualmente un registro contenitori in un'altra area

Potrebbe essere necessario spostare un Registro Azure Container da un'area di Azure a un'altra. Ad esempio, è possibile eseguire una pipeline di sviluppo o ospitare una nuova destinazione di distribuzione in un'area diversa e si vuole fornire un registro nelle vicinanze.

Sebbene Azure Resource Mover non possa attualmente automatizzare uno spostamento per un Registro Azure Container, è possibile spostare manualmente un registro contenitori in un'area diversa:

  • Esportare le impostazioni del Registro di sistema in un modello di Resource Manager
  • Usare il modello per distribuire un Registro di sistema in un'area di Azure diversa
  • Importare il contenuto del Registro di sistema dal Registro di sistema di origine al Registro di sistema di destinazione

Nota

Se occorre distribuire immagini del contenitore identiche tra più aree di Azure, Registro Azure Container supporta anche la replica geografica. Replica geografica di un Registro di sistema (livello di servizio Premium richiesto), è possibile gestire più aree con nomi di immagine e tag identici da un singolo Registro di sistema.

Prerequisiti

Interfaccia della riga di comando di Azure

Considerazioni

  • Usare i passaggi descritti in questo articolo per spostare il Registro di sistema in un'area diversa nella stessa sottoscrizione. È possibile che sia necessaria più configurazione per spostare un Registro di sistema in una sottoscrizione di Azure diversa nello stesso tenant di Active Directory.
  • L'esportazione e l'uso di un modello di Resource Manager consentono di ricreare molte impostazioni del Registro di sistema. È possibile modificare il modello per configurare altre impostazioni o aggiornare il Registro di sistema di destinazione dopo la creazione.
  • Attualmente, Registro Azure Container non supporta lo spostamento del Registro di sistema in un tenant di Active Directory diverso. Questa limitazione si applica ai registri crittografati con una chiave gestita dal cliente e registri non crittografati.
  • Se non è possibile spostare un Registro di sistema è descritto in questo articolo, creare un nuovo Registro di sistema, ricreare manualmente le impostazioni e Importare il contenuto del Registro di sistema nel Registro di sistema di destinazione.
  • È possibile trovare i passaggi per spostare le risorse del Registro di sistema in un nuovo gruppo di risorse nella stessa sottoscrizione o spostare le risorse in una nuova sottoscrizione.

Esportare il modello dal Registro di sistema di origine

Usare portale di Azure, interfaccia della riga di comando di Azure, Azure PowerShell o altri strumenti di Azure per esportare un modello di Resource Manager. Per usare il Portale di Azure:

  1. Nella portale di Azure passare al Registro di sistema di origine.

  2. Nel menu, in Automazione selezionare Esporta modello>Download.

    Esporta modello per registro contenitori

Ridistribuire il Registro di sistema di destinazione nella nuova area

Modificare il modello

Esaminare le proprietà del Registro di sistema nel file JSON del modello scaricato e apportare modifiche necessarie. Almeno:

  • Modificare il nome defaultValue del Registro di sistema nel nome desiderato del Registro di sistema di destinazione
  • Aggiornare l'oggetto location all'area di Azure desiderata per il Registro di sistema di destinazione
{
    "$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",
        ...
        }
    ]
}

Per altre informazioni, vedere Usare il modello esportato dalla portale di Azure e dal riferimento al modello.

Importante

Se si vuole crittografare il Registro di sistema di destinazione usando una chiave gestita dal cliente, assicurarsi di aggiornare il modello con le impostazioni per l'identità gestita, l'insieme di credenziali delle chiavi e la chiave necessari. È possibile abilitare la chiave gestita dal cliente solo quando si distribuisce il Registro di sistema.

Per altre informazioni, vedere Crittografare il Registro di sistema usando la chiave gestita dal cliente.

Creare un gruppo di risorse

Creare un gruppo di risorse per il Registro di sistema di destinazione usando az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.

az group create --name myResourceGroup --location eastus

Distribuire il Registro di sistema di destinazione in una nuova area

Usare il comando az deployment group create per distribuire il Registro di sistema di destinazione usando il modello:

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

Nota

Se durante la distribuzione vengono visualizzati errori, potrebbe essere necessario aggiornare determinate configurazioni nel file del modello e riprovare il comando.

Importare contenuto del Registro di sistema nel Registro di sistema di destinazione

Dopo aver creato il Registro di sistema nell'area di destinazione, usare il comando az acr import o il comando Import-AzContainerImagedi PowerShell equivalente per importare immagini e altri artefatti da mantenere dal Registro di sistema di origine al Registro di sistema di destinazione. Per esempi di comandi, vedere Importare immagini del contenitore in un registro contenitori.

  • Usare i comandi dell'interfaccia della riga di comando di Azure az acr repository e az acr repository show-tags o Azure PowerShell equivalenti, per enumerare il contenuto del Registro di sistema di origine.
  • Eseguire il comando di importazione per singoli artefatti o creare uno script per eseguire un elenco di artefatti.

Lo script dell'interfaccia della riga di comando di Azure di esempio enumera i repository e i tag di origine e quindi importa gli artefatti in un Registro di sistema di destinazione nella stessa sottoscrizione di Azure. Modificare in base alle esigenze per importare repository o tag specifici. Per importare da un Registro di sistema in una sottoscrizione o un tenant diverso, vedere esempi in Importare immagini contenitore in un registro contenitori.

#!/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

Verificare il Registro di sistema di destinazione

Confermare le informazioni seguenti nel Registro di sistema di destinazione:

  • Impostazioni del Registro di sistema, ad esempio il nome del Registro di sistema, il livello di servizio, l'accesso pubblico e le repliche
  • Repository e tag per il contenuto che si vuole conservare.

Configurazione aggiuntiva

  • Se necessario, configurare manualmente le impostazioni nel Registro di sistema di destinazione, ad esempio endpoint privati, regole di accesso IP e identità gestite.

  • Aggiornare i sistemi di sviluppo e distribuzione per usare il Registro di sistema di destinazione anziché il Registro di sistema di origine.

  • Aggiornare le regole del firewall client per consentire l'accesso al Registro di sistema di destinazione.

Eliminare il Registro di sistema originale

Dopo aver distribuito correttamente il Registro di sistema di destinazione, il contenuto migrato e le impostazioni del Registro di sistema verificate, è possibile eliminare il Registro di sistema di origine.

Passaggi successivi