Mover manualmente um registo de contentor para outra região

Poderá ter de mover um registo de contentor do Azure de uma região do Azure para outra. Por exemplo, pode executar um pipeline de desenvolvimento ou alojar um novo destino de implementação numa região diferente e pretende fornecer um registo próximo.

Embora o Azure Resource Mover não consiga automatizar atualmente uma movimentação para um registo de contentor do Azure, pode mover manualmente um registo de contentor para uma região diferente:

  • Exportar definições de registo para um modelo de Resource Manager
  • Utilizar o modelo para implementar um registo numa região diferente do Azure
  • Importar conteúdo do registo do registo de origem para o registo de destino

Nota

Se precisar de distribuir imagens de contentor idênticas por várias regiões do Azure, Azure Container Registry também suporta a georreplicação. Ao georreplicar um registo (escalão de serviço Premium necessário), pode servir várias regiões com nomes de imagem e etiquetas idênticos a partir de um único registo.

Pré-requisitos

CLI do Azure

Considerações

  • Utilize os passos neste artigo para mover o registo para uma região diferente na mesma subscrição. Poderá ser necessária mais configuração para mover um registo para uma subscrição do Azure diferente no mesmo inquilino do Active Directory.
  • Exportar e utilizar um modelo de Resource Manager pode ajudar a recriar muitas definições de registo. Pode editar o modelo para configurar mais definições ou atualizar o registo de destino após a criação.
  • Atualmente, Azure Container Registry não suporta a mudança de registo para um inquilino diferente do Active Directory. Esta limitação aplica-se a ambos os registos encriptados com uma chave gerida pelo cliente e registos não encriptados.
  • Se não conseguir mover um registo está descrito neste artigo, crie um novo registo, recrie manualmente as definições e Importe o conteúdo do registo no registo de destino.
  • Pode encontrar os passos para mover recursos do registo para um novo grupo de recursos na mesma subscrição ou mover recursos para uma nova subscrição.

Exportar modelo do registo de origem

Utilize a portal do Azure, a CLI do Azure, Azure PowerShell ou outras ferramentas do Azure para exportar um modelo de Resource Manager. Para utilizar o portal do Azure:

  1. Na portal do Azure, navegue para o registo de origem.

  2. No menu, em Automatização, selecione Exportar modelo>Transferir.

    Exportar modelo para o registo de contentor

Reimplementar o registo de destino na nova região

Modificar modelo

Inspecione as propriedades do registo no ficheiro JSON do modelo que transferiu e faça as alterações necessárias. No mínimo:

  • Alterar o nome do defaultValue registo para o nome pretendido do registo de destino
  • Atualizar para location a região do Azure pretendida para o registo de destino
{
    "$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",
        ...
        }
    ]
}

Para obter mais informações, veja Utilizar o modelo exportado do portal do Azure e a referência do modelo.

Importante

Se quiser encriptar o registo de destino com uma chave gerida pelo cliente, certifique-se de que atualiza o modelo com definições para a identidade gerida, o cofre de chaves e a chave necessárias. Só pode ativar a chave gerida pelo cliente quando implementar o registo.

Para obter mais informações, veja Encriptar o registo com a chave gerida pelo cliente.

Criar grupo de recursos

Crie um grupo de recursos para o registo de destino com az group create. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.

az group create --name myResourceGroup --location eastus

Implementar o registo de destino na nova região

Utilize o comando az deployment group create para implementar o registo de destino com o modelo:

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

Nota

Se vir erros durante a implementação, poderá ter de atualizar determinadas configurações no ficheiro de modelo e repetir o comando.

Importar conteúdo do registo no registo de destino

Depois de criar o registo na região de destino, utilize o comando az acr import ou o comando Import-AzContainerImageequivalente do PowerShell , para importar imagens e outros artefactos que pretende preservar do registo de origem para o registo de destino. Para obter exemplos de comandos, veja Importar imagens de contentor para um registo de contentor.

  • Utilize os comandos da CLI do Azure az acr repository list e az acr repository show-tags, ou Azure PowerShell equivalentes, para ajudar a enumerar os conteúdos do seu registo de origem.
  • Execute o comando de importação para artefactos individuais ou crie um script para executar uma lista de artefactos.

O seguinte script da CLI do Azure de exemplo enumera os repositórios e etiquetas de origem e, em seguida, importa os artefactos para um registo de destino na mesma subscrição do Azure. Modifique conforme necessário para importar repositórios ou etiquetas específicos. Para importar de um registo numa subscrição ou inquilino diferente, veja exemplos em Importar imagens de contentor para um registo de contentor.

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

Verificar o registo de destino

Confirme as seguintes informações no registo de destino:

  • Definições do registo, como o nome do registo, o escalão de serviço, o acesso público e as replicaçãos
  • Repositórios e etiquetas para conteúdo que pretende preservar.

Configuração adicional

  • Se necessário, configure manualmente as definições no registo de destino, como pontos finais privados, regras de acesso ip e identidades geridas.

  • Atualize os sistemas de desenvolvimento e implementação para utilizar o registo de destino em vez do registo de origem.

  • Atualize as regras de firewall do cliente para permitir o acesso ao registo de destino.

Eliminar registo original

Depois de implementar com êxito o registo de destino, o conteúdo migrado e as definições de registo verificadas, pode eliminar o registo de origem.

Passos seguintes