Контейнеризация веб-приложений ASP.NET и их перенос в Службу приложений Azure

В этой статье рассказывается, как создать контейнеры приложений ASP.NET и перенести их в Службу приложений Azure с помощью средства контейнеризации приложений Миграции Azure. Процесс контейнеризации приложений не требует доступа к базе кода и легко применяется к любым доступным приложениям. Этот инструмент анализирует состояние выполнения приложений на сервере для определения компонентов этих приложений. Затем он помогает упаковать их в образ контейнера. После этого можно развернуть контейнерное приложение в Службе приложений Azure.

Сейчас инструмент контейнеризации приложений службы "Миграция Azure" поддерживает следующие возможности:

Инструмент контейнеризации приложений предоставляет следующие возможности:

  • Обнаружение компонентов приложения. Это средство удаленно подключается к серверам приложений, выполняющим приложения ASP.NET, и обнаруживает компоненты этих приложений. Оно создает Dockerfile, на основе которого можно создать образ контейнера для приложения.
  • Создание образа контейнера. Вы можете проверить и дополнительно настроить Dockerfile в соответствии с требованиями к приложению и применить его для сборки образа контейнера этого приложения. Образ контейнера приложения передается в указанный вами реестр контейнеров Azure.
  • Развертывание в Службу приложений Azure. Далее это средство создает файлы развертывания, необходимые для развертывания контейнерного приложения в Службе приложений Azure.

Примечание.

Средство контейнеризации приложений службы "Миграция Azure" помогает обнаруживать приложения определенных типов (ASP.NET и веб-приложения Java в Apache Tomcat) и их компоненты на сервере приложений. Чтобы обнаружить серверы и составить список приложений, ролей и возможностей, выполняемых на локальных компьютерах, используйте средство "Миграция Azure: обнаружение и оценка".

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

  • Улучшенное использование инфраструктуры. При использовании контейнеров несколько приложений могут использовать одни и те же ресурсы и размещаться на одной инфраструктуре. Это способствует консолидации инфраструктуры и улучшению ее использования.
  • Упрощенное управление. Размещая свои приложения на современных управляемых платформах, таких как AKS или Служба приложений, можно упростить управление. Получить это упрощение можно, если полностью или частично отказаться от тех процессов обслуживания инфраструктуры и управления ею, которые вы бы раньше выполняли для собственной инфраструктуры.
  • Переносимость приложений. Благодаря расширенному внедрению и стандартизации форматов спецификаций и платформ для контейнеров можно избавиться от проблем, связанных с переносимостью приложений.
  • Внедрение современных средств управления с помощью DevOps. Использование контейнеров упрощает внедрение и стандартизацию современных методов управления, обеспечения безопасности и перехода на DevOps.

Из этого руководства вы узнаете, как выполнять следующие задачи:

  • Настройка учетной записи Azure.
  • Установка средства контейнеризации приложений службы "Миграция Azure".
  • Выполнить обнаружение нужного приложения ASP.NET.
  • Создание образа контейнера.
  • Развертывание контейнерного приложения в Службе приложений.

Примечание.

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

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

Перед началом работы с данным учебником необходимо выполнить описанные ниже действия.

Требование Сведения
Выбор компьютера для установки средства Вам потребуется компьютер с Windows для установки и запуска средства контейнеризации приложений службы "Миграция Azure". На компьютере с Windows можно запустить серверную (Windows Server 2016 или более поздней версии) или клиентскую (Windows 10) операционную систему. (Средство может работать на рабочем столе.)

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

Убедитесь, что на компьютере с Windows, на котором будет выполняться средство контейнеризации приложений службы "Миграция Azure", доступно не менее 6 ГБ. Это пространство предназначено для хранения артефактов приложения.

Этот компьютер с Windows должен иметь доступ к Интернету (напрямую или через прокси-сервер).

Установите средство веб-развертывания Майкрософт, если оно еще не установлено на компьютере, на котором выполняется средство контейнеризации приложений, а также на сервере приложений. Средство можно скачать здесь.
Серверы приложений Включите удаленное взаимодействие PowerShell на серверах приложений. Для этого войдите на сервер приложений и выполните эти инструкции.

Убедитесь, что на сервере приложений установлено ПО PowerShell 5.1. Следуйте инструкциям в разделе "Установка и настройка WMF 5.1 " на сервере приложений.

Установите средство веб-развертывания Майкрософт, если оно еще не установлено на компьютере, на котором выполняется средство контейнеризации приложений, а также на сервере приложений. Средство можно скачать здесь.
Приложение ASP.NET В настоящее время средство поддерживает следующее:
  • Приложения ASP.NET, использующие платформу .NET Framework 3.5 или более поздней версии.
  • Серверы приложений под управлением Windows Server 2012 R2 или более поздней версии. (Серверы приложений должны работать под управлением PowerShell 5.1.)
  • Приложения, работающие под управлением служб IIS версии 7.5 или более поздней.


В настоящее время средство не поддерживает:
  • Приложения, для которых требуется проверка подлинности Windows. (AKS в настоящее время не поддерживает gMSA.)
  • Приложения, которые зависят от других служб Windows, размещенных за пределами службы IIS.

Подготовка учетной записи пользователя Azure

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

После настройки подписки вам потребуется учетная запись пользователя Azure, у которой есть:

  • Разрешения владельца для подписки Azure.
  • Разрешения на регистрацию приложений Microsoft Entra.

Если вы создали бесплатную учетную запись Azure, вы являетесь владельцем подписки. Если вы не являетесь владельцем подписки, назначьте разрешения совместно с владельцем следующим образом:

  1. В портал Azure найдите "подписки". В разделе "Службы" выберите подписки:

    Screenshot that shows the search box for searching for an Azure subscription.

  2. На странице Подписки выберите подписку, в которой необходимо создать проект службы "Миграция Azure".

  3. Выберите подписку, а затем в области слева выберите Управление доступом (IAM).

  4. На вкладке Проверка доступа найдите соответствующую учетную запись пользователя.

  5. В разделе Добавление назначения ролей выберите Добавить:

    Screenshot that shows searching for a user account to check access and assign a role.

  6. На странице Добавление назначения роли выберите роль Владелец, а затем — учетную запись (в нашем примере это azmigrateuser). Затем выберите Сохранить.

    Screenshot that shows the Add role assignment page.

    Вашей учетной записи Azure также требуются разрешения для регистрации приложений Microsoft Entra.

  7. В портал Azure перейдите в Параметры пользователей>идентификатора Microsoft Entra ID>User.

  8. В параметрах пользователей убедитесь, что пользователи Microsoft Entra могут зарегистрировать приложения. (По умолчанию для этого параметра задано значение Да.)

    Screenshot that shows the User settings page.

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

Скачивание и установка средства контейнеризации приложений службы "Миграция Azure"

  1. Скачайте установщик средства контейнеризации приложений службы "Миграция Azure" на компьютер с Windows.

  2. Откройте PowerShell в режиме администратора и измените каталог PowerShell на папку, содержащую установщик.

  3. Выполните сценарий установки с помощью такой команды:

    .\AppContainerizationInstaller.ps1
    

Примечание.

Для Windows Server 2022 измените строку 135 и удалите PowerShell-ISE ее из списка компонентов, так как она больше не поддерживается.

Открытие средства контейнеризации приложений

  1. Откройте браузер на любом компьютере, который может подключиться к компьютеру с Windows, на котором запущено средство контейнеризации приложений. Перейдите по URL-адресу средства: https://имя компьютера или IP-адрес: 44369.

    Кроме того, вы можете открыть приложение с рабочего стола, использовав ярлык приложения.

  2. Если появится предупреждение о том, что подключение не является частным, выберите Дополнительно и подтвердите переход на веб-сайт. Такое предупреждение появляется в том случае, если веб-интерфейс использует самозаверяющий сертификат TLS/SSL.

  3. На экране входа в систему введите учетную запись администратора на локальном компьютере и выполните вход.

  4. В качестве типа приложения, которое требуется контейнеризовать, выберите веб-приложения ASP.NET.

  5. В списке целевой службы Azure выберите Контейнеры в Службе приложений Azure:

    Screenshot that shows the application type and target lists.

Выполнение предварительных требований средства

  1. Примите условия лицензии и прочитайте информацию от сторонних производителей.
  2. В веб-приложении средства настройте предварительные требования, выполните следующие действия.
    • Возможность подключения. Средство проверки того, что у компьютера с Windows есть доступ к Интернету. Если компьютер использует прокси-сервер, выполните следующее.

      1. Выберите Настроить прокси-сервер, чтобы указать адрес прокси-сервера (в форме IP-адреса или полное доменное имя) и порт прослушивания.

      2. Укажите учетные данные, если для прокси-сервера требуется аутентификация.

      3. Если вы уже добавили сведения о прокси-сервере либо отключили его или проверку подлинности, выберите Сохранить, чтобы снова запустить проверку подключения.

      Поддерживается только прокси-сервер HTTP.

    • Установка обновлений. Средство автоматически проверяет наличие последних обновлений и устанавливает их. Вы также можете вручную установить последнюю версию средства.

    • Установка средства веб-развертывания Майкрософт. Средство проверит, установлено ли средство веб-развертывания Майкрософт на компьютере с Windows, на котором работает средство контейнеризации приложений службы "Миграция Azure".

    • Включение удаленного взаимодействия PowerShell. Средство напомнит вам, что нужно включить удаленное взаимодействие PowerShell на серверах приложений, на которых запущены приложения ASP.NET, которые необходимо контейнеризовать.

Вход в Azure

  1. Выберите Войти, чтобы войти в учетную запись Azure.

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

  2. Выберите Копировать код и войти, чтобы скопировать код устройства и открыть окно входа в Azure в новой вкладке браузера:

    Screenshot that shows the Device code for Azure Sign in window.

  3. На новой вкладке вставьте код устройства и завершите процесс входа, используя учетные данные учетной записи Azure. После входа можно закрыть вкладку браузера и вернуться к веб-интерфейсу средства контейнеризации приложений.

  4. Выберите арендатор Azure AD, который вы хотите использовать.

  5. Укажите подписку Azure, которую нужно использовать.

Обнаружение приложений ASP.NET

Средство контейнеризации приложений удаленно подключится к серверам приложений с использованием предоставленных учетных данных и попытается обнаружить приложения ASP.NET, размещенные на этих серверах приложений.

  1. Укажите IP-адрес или полное доменное имя сервера и учетные данные сервера, на котором работает приложение ASP.NET и к которому вы намерены удаленно подключиться для обнаружения приложений.

    • Необходимо предоставить учетные данные для локального администратора Windows на сервере приложений.
    • Для учетных записей домена (пользователь должен быть администратором на сервере приложений), префиксируйте имя пользователя с доменным именем в этом формате: <домен\имя> пользователя.
    • Для локальных учетных записей (пользователь должен быть администратором на сервере приложений), префикс имени пользователя с именем узла в этом формате: <имя узла\имя> пользователя.
    • Обнаружение приложений можно запустить для пяти серверов за раз.
  2. Выберите Проверить, чтобы убедиться, что сервер приложений доступен с того компьютера, на котором запущено средство, и что предоставлены допустимые учетные данные. После успешной проверки в столбце Состояние отобразится состояние Сопоставлено:

    Screenshot that shows the server status as Mapped.

  3. Выберите Продолжить, чтобы запустить обнаружение приложений на выбранных серверах приложений.

  4. После завершения обнаружения приложения выберите приложения, которые необходимо контейнеризовать:

    Screenshot that shows the discovered ASP.NET application.

  5. Введите имя для целевого контейнера для каждого выбранного приложения. Укажите имя контейнера в качестве <имени:tag>, где тег используется для образа контейнера. Например, можно указать имя приложения appname:v1.

Параметризация конфигурации приложений

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

  1. Выберите конфигурации приложений, чтобы просмотреть обнаруженные конфигурации.

  2. Выберите параметры, которые необходимо параметризовать, и выберите Применить:

    Screenshot that shows the list of detected configurations.

Настройка внешних зависимостей файловой системы

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

  1. Выберите Изменить в разделе Папки приложений, чтобы просмотреть обнаруженные папки приложений. Эти папки были определены как обязательные артефакты, необходимые приложению. Они будут скопированы в образ контейнера.

  2. Выберите Добавить папку и укажите пути к папке, которые необходимо добавить.

  3. Чтобы добавить несколько папок в один том, разделяйте значения запятыми.

  4. Выберите вариант хранилища Azure file share (Общая папка Azure), если вам нужно хранить эти папки в постоянном хранилище за пределами контейнера.

  5. Завершив просмотр папок приложения, выберите Сохранить.

    Screenshot that shows the Edit application folders window.

  6. Выберите Продолжить, чтобы перейти к этапу сборки образа контейнера.

Создание образа контейнера

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

    Screenshot that shows the Build images window.

    Примечание.

    Отображаться будут только реестры контейнеров Azure с включенной учетной записью администратора. Сейчас для развертывания образа из реестра контейнеров Azure в Службе приложений Azure требуется учетная запись администратора. Дополнительные сведения см. на странице Проверка подлинности реестра контейнеров Azure.

  2. В начале этапа сборки для каждого выбранного приложения создаются файлы Dockerfile, которые используются для сборки образов контейнеров. Выберите Проверить для просмотра Dockerfile. На этапе проверки вы можете внести в Dockerfile любые требуемые изменения и сохранить их до начала сборки.

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

  4. Вы можете отслеживать прогресс сборки, выбрав Выполняется сборка под столбцом состояния. Ссылка станет активной через пару минут после запуска процесса сборки.

  5. Когда сборка завершится, выберите Продолжить, чтобы указать параметры развертывания.

    Screenshot that shows the Review link, the container image status, and the Build and Continue buttons.

Развертывание контейнерного приложения в Службе приложений Azure

Следующий этап после сборки образа контейнера — развертывание приложения в виде контейнера в Службе приложений Azure.

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

    Если у вас нет плана службы приложений либо вам необходим другой план службы приложений, его можно создать, выбрав Создать план службы приложений.

  2. Выбрав план службы приложений, нажмите кнопку Продолжить.

  3. Если вы параметризовали конфигурации приложения, укажите хранилище секретов, которое будет использоваться для приложения. Для управления секретами приложения можно выбрать Azure Key Vault или параметры приложения Службы приложений. Дополнительные сведения см. в статье Настройка строк подключения.

    • Если вы выбрали параметры приложения Службы приложений для управления секретами, выберите Продолжить.
    • Если вы хотите использовать хранилище ключей Azure для управления секретами приложения, укажите хранилище ключей, которое вы хотите использовать.
      • Если у вас нет хранилища ключей Azure или вы хотите создать новое хранилище ключей, можно создать его, нажав кнопку "Создать azure Key Vault".
      • Средство автоматически назначит необходимые разрешения для управления секретами с помощью хранилища ключей.
  4. Если вы ранее добавили дополнительные папки и выбрали вариант общей папки Azure для постоянного хранилища, укажите общую папку Azure, которую средство контейнеризации приложений будет использовать при развертывании. Средство скопирует папки приложений, настроенные для Файлов Azure, и подключит их к контейнеру приложения во время развертывания. 

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

  5. Теперь необходимо указать конфигурацию развертывания для приложения. Выберите Настроить, чтобы изменить развертывание для приложения. На этапе настройки вы можете изменить следующие параметры:

    • Имя. Укажите уникальное имя приложения. Это имя будет использоваться для создания URL-адреса приложения. Оно также будет использоваться в качестве префикса для других ресурсов, создаваемых в ходе развертывания.
    • Конфигурация приложения. Для всех параметризованных конфигураций приложения укажите значения, которые необходимо использовать для текущего развертывания.
    • Конфигурация хранилища. Проверьте сведения о папках приложений, настроенных для постоянного хранилища.

    Screenshot that shows the deployment configuration.

  6. Как только вы сохраните конфигурацию развертывания для приложения, средство создаст для этого приложения YAML-файл для развертывания в Kubernetes.

    • Выберите Проверить, чтобы проверить конфигурацию развертывания для приложений.

    • Выберите приложения, которые необходимо развернуть.

    • Выберите Развернуть, чтобы начать развертывание выбранных приложений.

      Screenshot that shows the Deploy button.

    • Когда развертывание приложения завершится, вы сможете отследить развернутые для этого приложения ресурсы, выбрав столбец Состояние развертывания.

Устранение неполадок

Для устранения проблем со средством контейнеризации приложений изучите файлы журнала на компьютере с Windows, на котором выполняется это средство. Файлы журнала средства расположены в папке C:\ProgramData\Microsoft Azure Migrate App Containerization\Logs.

Следующие шаги