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


Перемещение реестра контейнеров 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 " и ссылки на шаблон.

  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 \
  --name mydeployment \
  --resource-group myResourceGroup \
  --template-file template.json 

Примечание.

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

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

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

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

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

    Set-AzAksCluster -Name myAKSCluster -ResourceGroupName myResourceGroup -AcrNameToAttach <acr-name>
    
  6. Внесите необходимые изменения в файл манифеста Kubernetes для интеграции с перенесенным реестром контейнеров Azure (ACR).

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

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

Проверьте

Подтвердите следующие сведения в целевом реестре:

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

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

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