Mover manualmente o registro de contêiner para outra região

Talvez seja necessário mover um registro de contêiner do Azure de uma região do Azure para outra. Por exemplo, você pode executar um pipeline de desenvolvimento ou hospedar um novo destino de implantação em uma região diferente e querer fornecer um registro próximo.

Embora o Azure Resource Mover no momento não possa automatizar uma movimentação para um registro de contêiner do Azure, você pode movê-lo manualmente para outra região:

  • Exportar as configurações do registro para um modelo do Resource Manager
  • Usar o modelo para implantar um registro em uma região diferente do Azure
  • Importar conteúdo do registro de origem para o registro de destino

Observação

Se for necessário distribuir imagens de contêiner idênticas em várias regiões do Azure, o Registro de Contêiner do Azure também suporta a replicação geográfica. Ao fazer replicação geográfica de um registro (SKU Premium necessário), você pode atender a várias regiões com nomes e marcas idênticos de imagem de um único registro.

Pré-requisitos

CLI do Azure

Considerações

  • Use as etapas neste artigo para mover o registro para uma região diferente na mesma assinatura. Pode ser necessária uma configuração adicional para mover um registro para uma assinatura diferente do Azure no mesmo locatário do Active Directory.
  • Exportar e usar um modelo do Resource Manager pode ajudar a recriar várias configurações de registro. É possível editar o modelo para definir mais configurações ou atualizar o registro de destino após a criação.
  • Atualmente, o Registro de Contêiner do Azure não dá suporte a uma movimentação de registro para um locatário diferente do Active Directory. Essa limitação se aplica a aos registros criptografados com uma chave gerenciada pelo cliente e aos registros não criptografados.
  • Se não conseguir mover um registro descrito neste artigo, crie um novo registro, recrie manualmente as configurações e importe o conteúdo do registro no registro de destino.
  • Você pode encontrar as etapas para mover recursos do Registro para um novo grupo de recursos na mesma assinatura ou mover recursos para uma nova assinatura.

Exportar modelo do registro de origem

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

  1. No portal do Azure, navegue até o registro de origem.

  2. No menu, em Automação, selecione Exportar modelo>Baixar.

    Exportar modelo para o registro de contêiner

Reimplantar o registro de destino em uma nova região

Modificar um modelo

Inspecione as propriedades do registro no arquivo JSON do modelo que você baixou e faça as alterações necessárias. No mínimo:

  • Altere o nome do registro de defaultValue para o nome desejado do registro de destino
  • Atualize o location para a região desejada do Azure do registro 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 saber mais, confira Usar modelo exportado do portal do Azure e a referência de modelo.

Importante

Se você quiser criptografar o registro de destino usando uma chave gerenciada pelo cliente, atualize o modelo com configurações para a identidade gerenciada, o cofre de chaves e a chave necessários. Você só pode habilitar a chave gerenciada pelo cliente ao implantar o registro.

Para saber mais, confira Criptografar o registro usando uma chave gerenciada pelo cliente.

Criar grupo de recursos

Crie um grupo de recursos para o registro de destino usando o comando az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup no local eastus.

az group create --name myResourceGroup --location eastus

Implantar o registro de destino em uma nova região

Use o comando az deployment group create para implantar o registro de destino usando o modelo:

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

Observação

Se você vir erros durante a implantação, talvez seja necessário atualizar determinadas configurações no arquivo de modelo e repetir o comando.

Importar conteúdo do registro no registro de destino

Depois de criar o registro na região de destino, use o comando az acr import ou o comando Import-AzContainerImage equivalente do PowerShell para importar imagens e outros artefatos que você deseja preservar do registro de origem para o registro de destino. Para ver exemplos de comandos, confira Importar imagens de contêiner para o registro de contêiner.

  • Use os comandos da CLI do Azure az acr repository list e az acr repository show-tags, ou os equivalentes no Azure PowerShell, para ajudar a enumerar o conteúdo do registro de origem.
  • Execute o comando de importação para artefatos individuais ou o script para executar em uma lista de artefatos.

O exemplo de script a seguir da CLI do Azure enumera os repositórios e as marcas de origem e, em seguida, importa os artefatos para o registro de destino na mesma assinatura do Azure. Modifique conforme necessário para importar repositórios ou marcas específicas. Para importar de um registro em uma assinatura ou locatário diferente, consulte exemplos em Importar imagens de contêiner para um registro de contêiner.

#!/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 registro de destino

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

  • Configurações do registro, como o nome do registro, a camada de serviço, o acesso público e as replicações
  • Repositórios e marcas para o conteúdo que você deseja preservar.

Configuração adicional

  • Se necessário, defina manualmente as configurações no registro de destino, como pontos de extremidade privados, regras de acesso IP e identidades gerenciadas.

  • Atualize os sistemas de desenvolvimento e implantação para usar o registro de destino em vez do registro de origem.

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

Excluir registro original

Depois de ter implantado com êxito o registro de destino, o conteúdo migrado e verificar as configurações do registro, você pode excluir o registro de origem.

Próximas etapas