Поделиться через


Перемещение реестра контейнеров в другой регион вручную

Возможно, вам потребуется переместить реестр контейнеров Azure из одного региона Azure в другой. Например, если в новом регионе вы запускаете конвейер разработки или создаете целевой объект развертывания, для которого нужен размещенный рядом реестр.

Средство Azure Resource Mover пока не может автоматически перемещать реестр контейнеров Azure, но вы можете вручную переместить реестр контейнеров в другой регион, выполнив следующую процедуру:

  • Экспортируйте параметры реестра в шаблон Resource Manager.
  • Разверните реестр из этого шаблона в другом регионе Azure.
  • Импортируйте содержимое из исходного реестра в целевой реестр.

Примечание

Если нужно распространить идентичные образы контейнеров в нескольких регионах Azure, Реестр контейнеров Azure также поддерживает георепликацию. Путем георепликации реестра (требуется уровень служб "Премиум") можно обслуживать несколько регионов с одинаковыми именами образов и тегов из одного реестра.

Предварительные требования

Azure CLI

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье Краткое руководство по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в разделе Запуск Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, приведены в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

Рекомендации

  • Шаги в этой статье помогут вам переместить реестр в другой регион в пределах той же подписки. Для переноса реестра в другую подписку Azure в том же клиенте Active Directory может потребоваться дополнительная настройка.
  • Экспорт и использование шаблона Resource Manager помогут вам воссоздать многие настройки исходного реестра. Вы также можете изменить шаблон, чтобы настроить дополнительные параметры, или внести изменения в целевой реестр после его создания.
  • В настоящее время Реестр контейнеров Azure не поддерживает перенос реестра в другой клиент Active Directory. Это ограничение применяется как к реестрам, зашифрованным с помощью ключа, управляемого клиентом, так и к незашифрованным реестрам.
  • Если не удается переместить реестр, как описано в этой статье, создайте новый реестр, вручную воссоздайте настройки и импортируйте содержимое реестра в целевой реестр.
  • Воспользуйтесь инструкциями по перемещению ресурсов реестра в новую группу ресурсов в той же подписке или в новую подписку.

Экспорт шаблона из исходного реестра

С помощью портала Azure, Azure CLI, Azure PowerShell или любых других средств Azure экспортируйте шаблон Resource Manager. Использование портала Azure

  1. Найдите исходный реестр на портале Azure.

  2. В меню выберите элемент Автоматизация и элементы Экспорт шаблона>Скачать.

    Экспорт шаблона для реестра контейнеров

Повторное развертывание целевого реестра в новом регионе

Изменение шаблона

Проверьте все свойства реестра в JSON-файле скачанного шаблона и внесите в них требуемые изменения. Сделайте как минимум следующее:

  • Укажите для имени реестра параметр defaultValue с желаемым именем для целевого реестра.
  • Измените location так, чтобы значение указывало на регион Azure для целевого реестра.
{
    "$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",
        ...
        }
    ]
}

Дополнительные сведения см. в статье Руководство по использованию экспортированного шаблона из портала Azure и в справочнике по шаблонам.

Важно!

Если вы желаете применить шифрование целевого реестра с помощью ключа, управляемого клиентом, обязательно внесите в шаблон требуемые параметры управляемого удостоверения, хранилища ключей и ключа. Ключ, управляемый клиентом, можно настроить только при развертывании реестра.

Дополнительные сведения см. в разделе Шифрование реестра с помощью ключа, управляемого клиентом.

Создать группу ресурсов

Создайте группу ресурсов для целевого реестра с помощью команды az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

az group create --name myResourceGroup --location eastus

Развертывание целевого реестра в новом регионе

С помощью команды az deployment group create разверните целевой реестр на основе шаблона:

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

Примечание

Если при развертывании вы увидите ошибки, попробуйте изменить конфигурацию в файле шаблона и заново выполнить эту команду.

Импорт содержимого реестра в целевой реестр

После создания реестра в целевом регионе выполните команду az acr import или эквивалентную команду PowerShell Import-AzContainerImage, чтобы импортировать образы и другие артефакты, которые вам важно сохранить, из исходного реестра в целевой реестр. Примеры таких команд см. в статье Импорт образов контейнеров в реестр контейнеров.

  • Выполните команды Azure CLI az acr repository list и az acr repository show-tags или эквивалентные команды Azure PowerShell, чтобы получить список содержимого исходного реестра.
  • Выполните команды импорта для отдельных артефактов или скрипт для прохождения по списку артефактов.

В следующем примере сценария для Azure CLI перечисляются репозитории и теги в исходном реестре, а затем эти артефакты импортируются в целевой реестр в той же подписке Azure. Измените его, если для ваших репозиториев и тегов требуются другие действия. Чтобы выполнить импорт из реестра в другой подписке или клиенте, см. примеры в статье Импорт образов контейнеров в реестр контейнеров.

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

Проверка целевого реестра

Убедитесь, что в целевом реестре присутствует следующая информация:

  • параметры реестра: имя, уровень служб, открытый доступ и репликации;
  • репозитории и теги для того содержимого, которое вы хотите сохранить.

Дополнительная настройка

  • При необходимости вручную измените параметры целевого реестра, например частные конечные точки, правила доступа для IP-адресов и управляемые удостоверения.

  • Измените системы разработки и развертывания так, чтобы они использовали целевой реестр вместо исходного реестра.

  • Измените правила брандмауэра на клиентах, чтобы разрешить доступ к целевому реестру.

Удаление исходного реестра

Когда вы успешно завершите развертывание целевого реестра, перенос содержимого и проверку параметров, исходный реестр можно удалить.

Дальнейшие действия