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


Перемещение Реестр контейнеров Azure в другой регион

В этой статье показано, как переместить Реестр контейнеров Azure ресурсы в другой регион в той же подписке клиента Active Directory.

Примечание.

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

Необходимые компоненты

  • Вы можете переместить реестр только в том же клиенте Active Directory. Это ограничение применяется к реестрам, зашифрованным и незашифрованным с помощью ключа, управляемого клиентом.

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

Рекомендации по конечным точкам службы

Конечные точки службы виртуальной сети для Реестр контейнеров Azure ограничить доступ к указанной виртуальной сети. Конечные точки также могут ограничить доступ к списку диапазонов адресов IPv4 (интернет-протокол версии 4). Доступ любого пользователя, подключающегося к реестру из-за пределов этих источников, запрещен. Если конечные точки службы были настроены в исходном регионе для ресурса реестра, то же самое необходимо сделать в целевом. Ниже приведены действия по этому сценарию.

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

  • Во-вторых, изменения необходимо вносить в IaC Реестр контейнеров Azure. В networkAcl разделе в разделе virtualNetworkRulesдобавьте правило для целевой подсети. Убедитесь, что ignoreMissingVnetServiceEndpoint флаг имеет значение False, чтобы IaC не развертывал Реестр контейнеров Azure в случае, если конечная точка службы не настроена в целевом регионе. Это обеспечит выполнение предварительных требований в целевом регионе.

Рекомендации по частной конечной точке

Приватный канал Azure обеспечивает частное подключение из виртуальной сети к Платформа Azure как услуга (PaaS), собственные клиентом или партнерские службы Майкрософт. Приватный канал упрощает сетевую архитектуру и защищает подключение между конечными точками в Azure, устраняя уязвимость данных к общедоступному Интернету.

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

Рекомендации по интеграции DNS частной конечной точки Azure

Важно правильно настроить параметры DNS для разрешения IP-адреса частной конечной точки в полное доменное имя (FQDN) строка подключения.

Возможно, существующие службы Microsoft Azure уже используют конфигурацию DNS для общедоступной конечной точки. Эту конфигурацию нужно переопределить для подключения с помощью частной конечной точки.

Сетевой интерфейс, связанный с частной конечной точкой, содержит сведения для настройки DNS. Сведения о сетевом интерфейсе содержат полное доменное имя и частные IP-адреса для ресурса приватного канала.

Чтобы настраивать параметры DNS для частных конечных точек, можно использовать следующие варианты.

  • Используйте файл узла (рекомендуется только для тестирования). Для переопределения DNS можно использовать файл узла на виртуальной машине.
  • Используйте частную зону DNS. Вы можете с помощью частных зон DNS переопределять разрешения DNS для частной конечной точки. Частная зона DNS может быть связана с вашей виртуальной сетью для разрешения конкретных доменов.
  • Используйте DNS-сервер пересылки (необязательно). Чтобы переопределить разрешение DNS для ресурса приватного канала, можно использовать DNS-сервер пересылки. Создайте правило пересылки DNS, чтобы использовать частную зону DNS на DNS-сервере, размещенном в виртуальной сети.
  • Реестр контейнеров Azure необходимо настроить в целевом регионе с уровнем "Премиум".

  • Если доступ к реестру отключен, доступ к реестру определенными доверенными службами, включая Центр безопасности Azure, требует включения параметра сети для обхода правил сети.

  • Если реестр имеет утвержденную частную конечную точку и доступ к общедоступной сети отключен, репозитории и теги не могут быть перечислены за пределами виртуальной сети с помощью портал Azure, Azure CLI или других средств.

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

Простой

Сведения о возможных простоях см. в статье Cloud Adoption Framework для Azure: выбор метода перемещений.

Подготовить

Примечание.

Если вы хотите переместить только реестр контейнеров, который не хранит какие-либо данные клиента и должен быть перемещен в одиночку, вы можете просто развернуть реестр с помощью Bicep или JSON.

Чтобы просмотреть другие шаблоны конфигурации доступности, перейдите к разделу "Определение ресурсов" с помощью Bicep, шаблонов ARM и поставщика Terraform AzAPI

Чтобы подготовиться к перемещению с помощью миграции данных:

  1. Создайте карту зависимостей со всеми службами Azure, используемыми реестром. Для служб, которые находятся в области перемещения, необходимо выбрать соответствующую стратегию перемещений.

  2. Определите исходный макет сети для Реестр контейнеров Azure (ACR), например брандмауэра и сетевой изоляции.

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

    
    Get-AzContainerRegistryRepository -RegistryName registry
    
    
  4. Используйте задачи ACR для получения конфигураций службы автоматизации исходного реестра для импорта в целевой реестр.

Экспорт шаблона

В начале экспортируйте шаблон диспетчера ресурсов Resource Manager. Этот шаблон содержит параметры, описывающие реестр контейнеров. Дополнительные сведения об использовании экспортированных шаблонов см. в статье [Использование экспортированного шаблона из портал Azure](.). /azure-resource-manager/templates/template-tutorial-портал Azure e.md) и справочник по шаблонам.

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

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

    Снимок экрана: шаблон экспорта для реестра контейнеров.

  3. Найдите скачанный c портала ZIP-файл и распакуйте его в любую выбранную папку.

    В ZIP-файле содержатся файлы JSON, включающие шаблон и скрипты для развертывания шаблона.

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

Проверьте все свойства реестра в 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",
        ...
        }
    ]
}
  • Проверьте все связанные ресурсы в скачанном шаблоне, например карты области реестра, конфигурацию репликации, параметры диагностики, такие как log analytics.

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

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

Создайте группу ресурсов для целевого реестра с помощью команды 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

Примечание.

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

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

После создания реестра в целевом регионе:

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

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

  3. Выполните команды импорта для отдельных артефактов или скрипт для прохождения по списку артефактов.

В следующем примере сценария для 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
  1. Свяжите зависимые ресурсы с целевым Реестр контейнеров Azure, например рабочей областью Log Analytics в параметрах диагностики.

  2. Настройте интеграцию Реестр контейнеров Azure с обоими типами кластеров AKS, подготовленной или еще подготовленной, выполнив следующую команду:


Set-AzAksCluster -Name myAKSCluster -ResourceGroupName myResourceGroup -AcrNameToAttach <acr-name>

  1. Внесите необходимые изменения в файл манифеста Kubernetes для интеграции с перенесенными Реестр контейнеров Azure (ACR).

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

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

Проверка

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

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

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

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