Rilocare app di Azure Container in un'altra area

Questo articolo descrive come spostare un carico di lavoro di App Contenitore di Azure in un'altra area di Azure ricreando l'ambiente gestito e le app contenitore nell'area di destinazione. Il processo illustra l'esportazione della configurazione dell'applicazione, la ridistribuzione delle risorse, la convalida della distribuzione e la pulizia delle risorse nell'area di origine.

Importante

App contenitore di Azure non supporta la migrazione della regione in loco. È possibile ricreare le risorse nell'area di destinazione. Le risorse esistenti non vengono spostate. Questo articolo illustra la rilocazione della configurazione e dell'infrastruttura di App contenitore. Non copre la replicazione di dati dell'applicazione, database o altre dipendenze con stato.

Prerequisiti

Prima di iniziare, verificare di soddisfare i requisiti seguenti:

  • App Azure Container è disponibile nell'area di destinazione.
  • L'area di destinazione supporta le stesse funzionalità di App contenitore, profili di carico di lavoro e opzioni di rete usate nell'area di origine.
  • È disponibile una quota sufficiente nell'area di destinazione per le risorse che si prevede di distribuire.
  • Per le sottoscrizioni di origine e di destinazione sono disponibili le autorizzazioni seguenti:
    • Proprietario o Collaboratore nel gruppo di risorse.
    • Container Apps Contributor (consigliato). Questo ruolo include autorizzazioni con caratteri jolly che concedono l'accesso ai valori dei segreti di Container Apps. Per un accesso più ristretto, vedi Permessi per la gestione dei segreti.
  • Le immagini del contenitore si trovano in un registro accessibile dall'area di destinazione, ad esempio Registro Azure Container o un registro esterno supportato.
  • Le risorse di Azure dipendenti, ad esempio Key Vault, gli account di archiviazione, i database, le reti virtuali e i servizi di messaggistica, sono già disponibili nell'area di destinazione o hanno un piano di ridistribuzione.

Suggerimento

Se si usa Registro Azure Container, è consigliabile abilitare la replica geografica per rendere disponibili le immagini nell'area di destinazione senza ridistribuire il registro.

az acr replication create --registry <REGISTRY_NAME> --location <TARGET_REGION>

Comprendere i requisiti di tempo di inattività

App contenitore di Azure non supporta la migrazione live delle regioni. Il tempo di inattività dipende principalmente dalla propagazione DNS e dalle modifiche al routing del traffico durante il cutover. Per ridurre al minimo l'impatto:

  1. Distribuire e convalidare l'applicazione container prima nell'area di destinazione.
  2. Ridurre i valori TTL DNS in anticipo (ad esempio, a 60 secondi) in modo che le modifiche di routing vengano propagate rapidamente.
  3. Reindirizzare il traffico di produzione al nuovo endpoint solo dopo il completamento della convalida.
  4. Mantenere in esecuzione l'app contenitore di origine finché non si conferma che la distribuzione di destinazione è integra.

Preparazione

Per prepararsi alla rilocazione, esportare la configurazione di origine ed esaminare tutte le impostazioni specifiche dell'area.

Identificare le dipendenze

Le risorse dipendenti seguenti devono esistere nell'area di destinazione prima del cutover:

  • Azure Key Vault (Archivio chiavi di Azure)
  • Account di archiviazione
  • Database e servizi di messaggistica (ad esempio il bus di servizio di Azure, Azure Cosmos DB)
  • Reti virtuali, subnet ed endpoint privati
  • Gruppi di sicurezza di rete (NSG) e route definite dall'utente
  • Zone DNS privato
  • Aree di lavoro Log Analytics
  • Componenti Dapr (se utilizzati)

Importante

I segreti, i certificati, i domini personalizzati e i valori di configurazione sicuri non vengono mantenuti nei modelli esportati. È necessario ricreare queste risorse manualmente nell'area di destinazione dalle origini originali.

Pianificare le modifiche all'identità gestita

La gestione delle identità amministrate dipende dal tipo di identità:

  • Identità assegnata dal sistema: Quando si ricrea l'applicazione container, Azure genera un nuovo ID principale. È necessario riassegnare tutti i ruoli RBAC, i criteri di accesso di Azure Key Vault e le autorizzazioni per il servizio downstream alla nuova identità.

  • Identità assegnata dall'utente: le identità gestite assegnate dall'utente sono risorse a livello di area e non possono essere spostate tra aree. Creare una nuova identità assegnata dall'utente nell'area di destinazione e assegnare le autorizzazioni necessarie prima della distribuzione.

Esportare la configurazione di origine

Usare il portale di Azure per esportare i modelli di Azure Resource Manager (ARM) sia per l'ambiente gestito di Container Apps che per le singole Container Apps.

  1. Accedi al portale di Azure.
  2. Andare all'ambiente gestito di App contenitore o alla risorsa dell'app contenitore.
  3. Nel menu a sinistra, selezionare Automazione>Modello di esportazione.
  4. Selezionare Scarica ed estrarre il .zip file in una cartella locale.

I file estratti includono:

File Description
template.json Definizione di configurazione della risorsa
File di parametri Valori dei parametri di distribuzione
Script di distribuzione Script per l'esecuzione del modello

Annotazioni

I modelli esportati fungono da punto di partenza per comprendere la configurazione. Possono includere proprietà di sola lettura che è necessario rimuovere e non includono segreti o valori di certificato. Esaminare attentamente l'output esportato prima di usarlo per la ridistribuzione.

Modificare il modello di ambiente gestito

Prima di ridistribuire l'ambiente gestito, aggiornare la configurazione esportata:

  • Aggiornare la posizione: Impostare la location proprietà sull'area di Azure di destinazione.
  • Convalidare i nomi delle risorse: assicurarsi che il nome dell'ambiente gestito sia univoco all'interno del gruppo di risorse di destinazione e dell'area.
  • Esaminare la configurazione di Log Analytics: aggiornare il riferimento all'area di lavoro Log Analytics se l'area di lavoro è specifica alla regione. Potrebbe essere necessario creare una nuova area di lavoro nell'area di destinazione.
  • Rimuovere le proprietà di sola lettura: se è stato esportato dal portale, rimuovere proprietà come id, typesystemData, e altri campi di sola lettura che causano errori di distribuzione.

Modificare il modello di app contenitore

Dopo aver esportato la configurazione dell'app contenitore, apportare le modifiche seguenti:

  • Aggiornare il riferimento all'ambiente gestito: sostituire managedEnvironmentId con l'ID risorsa del nuovo ambiente gestito nell'area di destinazione. Gli ambienti gestiti sono associati all'area e non possono essere riutilizzati tra aree.

  • Verificare i riferimenti all'immagine del contenitore: verificare che i riferimenti alle immagini puntino a un registro contenitori accessibile dall'area di destinazione. Se hai abilitato la replica geografica di ACR, i riferimenti esistenti potrebbero funzionare senza modifiche.

  • Esaminare la configurazione in ingresso: dopo la ridistribuzione, il nome di dominio completo (FQDN) dell'applicazione cambia. Pianificare l'aggiornamento dei record DNS personalizzati e del routing del traffico durante il passaggio.

  • Riconfigurare i segreti e le impostazioni dell'app: ricreare i segreti usando i riferimenti di Azure Key Vault o la configurazione dell'applicazione. Non fare affidamento sui valori esportati per le impostazioni sensibili.

  • Aggiornare i componenti Dapr: se si usa Dapr, verificare che le configurazioni del componente Dapr facciano riferimento alle risorse disponibili nell'area di destinazione, ad esempio archivi di stato, broker pub/sub, archivi di segreti.

  • Aggiornare diagnostica e monitoraggio: verificare i riferimenti all'area di lavoro Log Analytics e riconfigurare le impostazioni di diagnostica in base alle esigenze.

Ripetere la distribuzione

Gli ambienti gestiti di App per contenitori di Azure sono legati alla regione. Creare l'ambiente gestito nell'area di destinazione prima di ridistribuire le app contenitore.

Distribuire l'ambiente gestito

  1. Nel portale di Azure passare al gruppo di risorse di destinazione.
  2. Selezionare Distribuisci un modello personalizzato.
  3. Scegliere Crea un modello personalizzato nell'editor e caricare il modello ARM modificato.
  4. Esaminare le impostazioni di distribuzione e quindi selezionare Rivedi e crea per avviare la distribuzione.

Verificare l'accesso al registro dei contenitori

Prima di distribuire l'app contenitore, verificare che l'identità usata dall'app contenitore (identità gestita assegnata dal sistema o assegnata dall'utente) abbia il ruolo AcrPull assegnato nel Registro Azure Container di destinazione.

az role assignment create \
  --assignee <IDENTITY_PRINCIPAL_ID> \
  --role AcrPull \
  --scope <ACR_RESOURCE_ID>

Annotazioni

Se l'app contenitore fa riferimento a un Registro Azure Container in una sottoscrizione o un'area diversa, verificare che le autorizzazioni necessarie siano configurate preventivamente per evitare errori nel pull di immagini durante la distribuzione.

Distribuire l'app contenitore

  1. Nel portale di Azure passare al gruppo di risorse di destinazione.
  2. Selezionare Distribuisci un modello personalizzato.
  3. Caricare il modello ARM modificato per l'app contenitore.
  4. Esaminare le impostazioni e completare la distribuzione.

Configurare la rete

Dopo la distribuzione, riconfigurare la rete in modo che corrisponda alla configurazione di origine:

  1. Configurare l'ingresso: configurare l'ingresso pubblico o privato in base al modello di esposizione dell'applicazione.

  2. Riapplicare l'integrazione della rete virtuale: se l'app contenitore usa la rete privata, configurare la rete virtuale, le subnet, gli endpoint privati e le zone DNS private nell'area di destinazione.

  3. Aggiornare i gruppi di sicurezza della rete e le rotte definite dall'utente: ricreare i gruppi di sicurezza della rete e le rotte definite dall'utente in base alle esigenze.

  4. Aggiornare gli elenchi di indirizzi IP consentiti: se i servizi downstream usano elenchi di indirizzi consentiti basati su IP, aggiornarli con i nuovi indirizzi IP in uscita dall'ambiente di destinazione.Update IP allow lists: If downstream services use IP-based allow lists, update them with the new outbound IP addresses from the target-region environment.

  5. Configurare domini e certificati personalizzati: i domini personalizzati e i certificati TLS non vengono trasferiti durante la rilocazione. Riconfigurarli nella nuova app contenitore e aggiornare i record DNS.

Eseguire il cutover del traffico

Dopo la convalida, reindirizzare il traffico alla distribuzione dell'area di destinazione:

  1. Se in precedenza si è ridotto il valore TTL DNS, aggiornare i record DNS in modo che puntino al nuovo nome di dominio completo dell'app contenitore.

  2. Se si usa Frontdoor di Azure o Gestione traffico di Azure, aggiornare il pool back-end o l'endpoint per includere l'app contenitore nella regione di destinazione e rimuovere l'endpoint dalla regione di origine.

  3. Monitorare il traffico per verificare che le richieste raggiungano la nuova distribuzione.

Suggerimento

Mantenere l'app contenitore di origine in esecuzione durante la finestra di rollback. In caso di problemi, ripristinare il DNS o l'instradamento del traffico all'endpoint di origine fino a quando non si risolve il problema.

Verificare

Dopo il cutover del traffico, convalidare gli elementi seguenti:

  • Disponibilità dell'applicazione e tempi di risposta.
  • Comportamento di ridimensionamento in base al carico previsto e massimo.
  • Connettività a servizi dipendenti, ad esempio database, Key Vault, archiviazione e messaggistica.
  • Accesso dell'identità gestita alle risorse downstream.
  • Funzionalità dei componenti Dapr, se utilizzata.
  • Log e metriche che fluiscono verso Monitoraggio di Azure e Log Analytics.

Verificare utilizzando la CLI:

# Confirm the container app is running
az containerapp show \
  --name <APP_NAME> \
  --resource-group <TARGET_RESOURCE_GROUP> \
  --query "{status:properties.runningStatus, fqdn:properties.configuration.ingress.fqdn}" \
  --output table

# Test the application endpoint
curl -s -o /dev/null -w "%{http_code}" https://<APP_FQDN>/health

Importante

Mantenere in esecuzione l'app contenitore di origine finché la convalida non viene completata e l'integrità della distribuzione di destinazione non viene confermata. Definire una finestra di rollback, ad esempio da 24 a 48 ore, prima di pulire le risorse di origine.

Pulire le risorse di origine

Dopo aver completato la convalida e il cutover del traffico:

  1. Eliminare l'app contenitore di origine.
  2. Eliminare l'ambiente gestito di origine se non è più necessario.
  3. Rimuovere le immagini del contenitore inutilizzate, le risorse di rete e le assegnazioni di identità per evitare addebiti non necessari.
  4. Aggiornare i dashboard di monitoraggio o le regole di avviso che fanno riferimento alle risorse di origine.

Limitazioni

  • App contenitore di Azure non supporta la rilocazione sul posto o la rilocazione dinamica della regione.
  • È necessario ricreare segreti, certificati e domini personalizzati.
  • La cronologia delle revisioni non viene mantenuta nella distribuzione di destinazione.
  • Il tempo di inattività è necessario durante il cutover.
  • Gli ID entità delle identità gestite assegnate dal sistema cambiano, quindi è necessario ricreare tutte le assegnazioni del controllo degli accessi in base al ruolo.
  • Le identità gestite assegnate dall'utente sono a livello di area e devono essere ricreate nell'area di destinazione.
  • Cambiano gli indirizzi IP in uscita, che potrebbero influire sugli elenchi consentiti del servizio downstream.