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
Utilize o ambiente bash no Azure Cloud Shell. Para obter mais informações, veja Início Rápido do Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, veja Como executar a CLI do Azure num contentor do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de início de sessão, veja Iniciar sessão com a CLI do Azure.
Quando lhe for pedido, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
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:
Na portal do Azure, navegue para o registo de origem.
No menu, em Automatização, selecione Exportar modelo>Transferir.
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-AzContainerImage
equivalente 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
- Saiba mais sobre como importar imagens de contentor para um registo de contentor do Azure a partir de um registo público ou de outro registo privado.
- Veja a referência de modelo Resource Manager para Azure Container Registry.