Condividi tramite


Rilocare un Registro Azure Container in un'altra area

Questo articolo illustra come rilocare le risorse del Registro Azure Container in un'altra area nella stessa sottoscrizione del tenant di Active Directory.

Nota

Se occorre distribuire immagini del contenitore identiche tra più aree di Azure, Registro Azure Container supporta anche la replica geografica. La replica geografica di un registro (è necessario un livello di servizio Premium) consente di servire più aree con nomi di immagine e di tag identici da un unico registro.

Prerequisiti

Considerazioni sugli endpoint di servizio

Gli endpoint servizio di rete virtuale per Registro Azure Container consentono di limitare l'accesso a una rete virtuale specificata. Gli endpoint possono inoltre limitare l'accesso a un elenco di intervalli di indirizzi IPv4 (protocollo IP versione 4). L'accesso viene negato a tutti gli utenti che si connettono al registro dall'esterno di tali origini. Se gli endpoint di servizio sono stati configurati nell'area di origine per la risorsa del registro, è necessario eseguire la stessa operazione nell'area di destinazione. I passaggi per questo scenario sono indicati di seguito:

  • Per ricreare correttamente l'istanza del registro nell'area di destinazione, è necessario creare prima la rete virtuale e la subnet. Se lo spostamento di queste due risorse viene eseguito con lo strumento Spostamento risorse di Azure, gli endpoint di servizio non verranno configurati automaticamente e sarà quindi necessario fornire la configurazione manuale.

  • In secondo luogo, le modifiche devono essere apportate nell'IaC del Registro Azure Container. Nella sezione networkAcl, in virtualNetworkRules, aggiungere la regola per la sottorete di destinazione. Assicurarsi che il flag ignoreMissingVnetServiceEndpoint sia impostato su False, in modo che l'IaC non distribuisca Registro Azure Container nel caso in cui l'endpoint del servizio non sia configurato nell'area di destinazione. In questo modo si garantisce che i prerequisiti nell'area di destinazione siano soddisfatti

Considerazioni sull'endpoint privato

Collegamento privato di Azure offre connettività privata da una rete virtuale alla piattaforma di Azure distribuita come servizio (PaaS), di proprietà del cliente o dei servizi partner Microsoft. Il collegamento privato semplifica l'architettura di rete e protegge la connessione tra gli endpoint in Azure eliminando l'esposizione dei dati alla rete Internet pubblica.

Per una ricreazione corretta delle risorse nell'area di destinazione, è necessario creare la rete virtuale e la sottorete prima che si verifichi la ricreazione effettiva.

Considerazioni sull'integrazione DNS dell'endpoint privato di Azure

È importante configurare correttamente le impostazioni DNS per risolvere l'indirizzo IP dell'endpoint privato nel nome di dominio completo (FQDN) della stringa di connessione.

È possibile che i servizi di Microsoft Azure esistenti abbiano già una configurazione DNS per un endpoint pubblico. È necessario eseguire l'override di questa configurazione per connettersi usando l'endpoint privato.

L'interfaccia di rete associata all'endpoint privato contiene le informazioni per configurare il DNS. Le informazioni sull'interfaccia di rete includono l'FQDN e gli indirizzi IP privati per la risorsa del collegamento privato.

Per configurare le impostazioni DNS per gli endpoint privati si può procedere nei modi seguenti:

  • Usare il file host (soluzione consigliata solo per il test) . È possibile usare il file host in una macchina virtuale per eseguire l'override del DNS.
  • Usare una zona DNS privato. È possibile usare zone DNS privato per eseguire l'override della risoluzione DNS per un endpoint privato. Una zona DNS privato può essere collegata alla rete virtuale per risolvere domini specifici.
  • Usare il server d'inoltro DNS (facoltativo) . È possibile usare il server d'inoltro DNS per eseguire l'override della risoluzione DNS per una risorsa collegamento privato. Creare una regola di inoltro DNS per usare una zona DNS privato nel server DNS ospitato in una rete virtuale.
  • Registro Azure Container deve essere configurato nell'area di destinazione con il livello Premium.

  • Quando l'accesso alla rete pubblica a un registro è disabilitato, l'accesso al registro da parte di determinati servizi attendibili, incluso il Centro sicurezza di Azure, richiede l'abilitazione di un'impostazione di rete per ignorare le regole di rete.

  • Se il registro ha un endpoint privato approvato e l'accesso alla rete pubblica è disabilitato, i repository e i tag non possono essere elencati all'esterno della rete virtuale usando il portale di Azure, l'interfaccia della riga di comando di Azure o altri strumenti.

  • Nel caso di una nuova replica, è fondamentale aggiungere manualmente un nuovo record DNS per l'endpoint dati nell'area di destinazione.

Tempo di inattività

Per comprendere i possibili tempi di inattività, vedere Cloud Adoption Framework per Azure: selezionare un metodo di rilocazione.

Preparazione

Nota

Se si vuole solo rilocare un Registro Azure Container che non contiene dati specifici del client e deve essere spostato da solo, è sufficiente ridistribuire il registro usando Bicep o JSON.

Per visualizzare altri modelli di configurazione della disponibilità, passare a Definire le risorse con Bicep, modelli di Resource Manager e provider AzAPI di Terraform

Per prepararsi alla rilocazione con la migrazione dei dati:

  1. Creare una mappa delle dipendenze con tutti i servizi di Azure usati dal registro. Per i servizi inclusi nell'ambito della rilocazione, è necessario scegliere la strategia di rilocazione appropriata.

  2. Identificare il layout di rete di origine per Registro Azure Container come il firewall e l'isolamento della rete.

  3. Recuperare le immagini necessarie dal registro di origine per l'importazione in quello di destinazione. Per recuperare le immagini, eseguire il comando seguente:

    
    Get-AzContainerRegistryRepository -RegistryName registry
    
    
  4. Usare Attività del Registro Azure Container per recuperare le configurazioni di automazione del registro di origine per l'importazione in quello di destinazione.

Esportare il modello

Per iniziare, esportare un modello di Resource Manager. Questo modello contiene le impostazioni che descrivono il Registro Container. Per altre informazioni su come usare i modelli esportati, vedere Usare il modello esportato dal portale di Azure e il riferimento al modello.

  1. Nel Portale di Azure passare al registro di origine.

  2. Nel menu, in Automazione, selezionareEsporta modello>Download.

    Screenshot del modello di esportazione per il registro contenitori.

  3. Individuare il file .zip scaricato dal portale e decomprimere il file in una cartella di propria scelta.

    Questo file ZIP contiene i file .json che includono il modello e gli script per distribuire il modello.

Modificare il modello

Esaminare le proprietà del registro nel file JSON del modello scaricato e apportare le modifiche necessarie. Minimo:

  • Modificare il nome del registro defaultValue impostando il nome desiderato del registro di destinazione
  • Aggiornare l'oggetto location all'area di Azure desiderata per il registro 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",
        ...
        }
    ]
}
  • Convalidare tutti i dettagli delle risorse associate nel modello scaricato, ad esempio scopeMaps del registro, configurazione delle repliche, impostazioni di diagnostica come Log Analytics.

  • Se il registro di origine è crittografato, crittografare il registro di destinazione usando una chiave gestita dal cliente e 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.

Crea gruppo di risorse

Creare un gruppo di risorse per il registro di destinazione usando il comando 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

Ripetere la distribuzione

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

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

Nota

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

Importare il contenuto del registro nel registro di destinazione

Dopo aver creato il registro nell'area di destinazione:

  1. Usare il comando az acr import o il comando Import-AzContainerImage PowerShell equivalente per importare immagini e altri artefatti da mantenere dal registro di origine al registro di destinazione. Per esempi di comandi, vedere Importare immagini del contenitore in un registro contenitori.

  2. Usare i comandi dell'interfaccia della riga di comando di Azure az acr repository list e az acr repository show-tags o gli equivalenti di Azure PowerShell per enumerare il contenuto del registro di origine.

  3. Eseguire il comando di importazione per singoli artefatti o crearne uno script per l'esecuzione su un elenco di artefatti.

Lo script dell'interfaccia della riga di comando di Azure di esempio seguente enumera i repository e i tag di origine e quindi importa gli artefatti in un registro di destinazione nella stessa sottoscrizione di Azure. Modificare in base alle esigenze per importare repository o tag specifici. Per importare da un registro in una sottoscrizione o un tenant diverso, vedere gli esempi in Importare immagini del 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
  1. Associare le risorse dipendenti al Registro Azure Container di destinazione, ad esempio l'area di lavoro Log Analytics nelle impostazioni di diagnostica.

  2. Configurare l'integrazione di Registro Azure Container con entrambi i tipi di cluster del servizio Azure Kubernetes, di cui è ancora stato effettuato il provisioning eseguendo il comando seguente:


Set-AzAksCluster -Name myAKSCluster -ResourceGroupName myResourceGroup -AcrNameToAttach <acr-name>

  1. Apportare le modifiche necessarie al file manifesto Kubernetes per integrarlo con Registro Azure Container (ACR) rilocato.

  2. Aggiornare i sistemi di sviluppo e distribuzione per usare il registro di destinazione anziché il registro di origine.

  3. Aggiornare le regole del firewall client per consentire l'accesso al registro di destinazione.

Verificare

Verificare le informazioni seguenti nel registro di destinazione:

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

Eliminare il registro originale

Dopo aver distribuito correttamente il registro di destinazione, migrato il contenuto e verificato le impostazioni del registro, è possibile eliminare il registro di origine.