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


Контейнеризация и миграция приложений ASP.NET в Azure Kubernetes Service

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

Средство Azure Migrate: App Containerization в настоящее время поддерживает:

  • Контейнеризация приложений ASP.NET и их развертывание в контейнерах Windows в службе Azure Kubernetes.
  • Контейнеризация приложений ASP.NET и их развертывание в контейнерах Windows в Службе приложений Azure. Дополнительные сведения.
  • Контейнеризация веб-приложений Java в Apache Tomcat (на серверах Linux) и их развертывание на контейнерах Linux в AKS. Дополнительные сведения.
  • Контейнеризация веб-приложений Java на серверах Apache Tomcat (на серверах Linux) и их развертывание на контейнерах Linux в службе приложений. Дополнительные сведения.

Инструмент "Контейнеризация приложений" в Azure Migrate помогает:

  • Обнаружение приложения. Средство удаленно подключается к серверам приложений, на которых запущено приложение ASP.NET, и обнаруживает компоненты приложения. Средство создает Dockerfile, который можно использовать для создания образа контейнера для приложения.
  • Создайте образ контейнера: вы можете проверить и дополнительно настроить Dockerfile в соответствии с требованиями приложения и использовать его для создания образа контейнера приложения. Образ контейнера приложения отправляется в указанный реестр контейнеров Azure.
  • Развертывание в службе Azure Kubernetes. Затем средство создает файлы YAML определения ресурсов Kubernetes, необходимые для развертывания контейнерного приложения в кластере службы Azure Kubernetes. Файлы YAML можно настроить и использовать для развертывания приложения в AKS.

Замечание

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

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

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

В этом руководстве описано, как:

  • Настройка учетной записи Azure.
  • Установите инструмент Azure Migrate: контейнеризация приложений.
  • Откройте приложение ASP.NET.
  • Создание образа контейнера.
  • Разверните контейнерное приложение в AKS.

Замечание

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

Предпосылки

Прежде чем начать этот урок, вам следует:

Требование Подробности
Определение компьютера для установки средства Компьютер с Windows для установки и запуска инструмента контейнеризации приложений Azure Migrate. Компьютер Windows может быть сервером (Windows Server 2016 или более поздней версии) или операционной системой (Windows 10), что означает, что средство может работать на рабочем столе.

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

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

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

Установите средство Microsoft Web Deploy на компьютере под управлением вспомогательного средства контейнеризации приложений и сервера приложений, если он еще не установлен. Здесь можно скачать инструмент.
Серверы приложений Включите удаленное взаимодействие PowerShell на серверах приложений: войдите на сервер приложений и выполните следующие инструкции, чтобы включить удаленное взаимодействие PowerShell.

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

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

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

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

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

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

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

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

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

    Снимок экрана: поле поиска для поиска подписки Azure.

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

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

  4. Нажмите «Добавить»>«Добавить назначение роли», чтобы открыть страницу «Добавить назначение роли».

  5. Назначьте следующую роль. Подробные инструкции см. в статье "Назначение ролей Azure" с помощью портала Azure.

    Настройка Ценность
    Должность Владелец
    Предоставить доступ к Пользователь
    Члены azmigrateuser (в этом примере)

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

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

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

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

    Снимок экрана: проверка в параметрах пользователя, если пользователи могут зарегистрировать приложения Active Directory.

    Это важно

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

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

Скачивание и установка средства миграции Azure: средство контейнеризации приложений

  1. Скачайте установщик Azure Migrate: контейнеризации приложений на компьютере с 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 Kubernetes.

    Снимок экрана: загрузка по умолчанию для средства контейнеризации приложений.

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

  1. Примите условия лицензионного соглашения и ознакомьтесь со сведениями сторонних производителей.
  2. В веб-приложении >, в разделе «Настройка необходимых компонентов», выполните следующие действия.
    • Подключение. Средство проверяет, имеет ли компьютер Windows доступ к Интернету. Если компьютер использует прокси-сервер:
      • Выберите "Настроить прокси-сервер ", чтобы указать прокси-адрес (в форме IP-адрес или полное доменное имя) и порт прослушивания.
      • Укажите учетные данные, если прокси-сервер нуждается в проверке подлинности.
      • Поддерживается только прокси-сервер HTTP.
      • Если вы добавили сведения о прокси-сервере или отключили прокси-сервер или проверку подлинности, нажмите кнопку "Сохранить ", чтобы снова активировать проверку подключения.
    • Установка обновлений. Средство автоматически проверяет наличие последних обновлений и устанавливает их. Вы также можете вручную установить последнюю версию средства из этого места.
    • Установите средство Microsoft Web Deploy: Это средство проверит, установлено ли средство Microsoft Web Deploy на компьютере с Windows, на котором выполняется средство миграции Azure: контейнеризация приложений.
    • Включение удаленного взаимодействия PowerShell: Средство сообщит вам, что необходимо убедиться в том, что удаленное взаимодействие PowerShell включено на серверах приложений, где приложения ASP.NET будут контейнеризированы.

Вход в Azure

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

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

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

    Снимок экрана модального окна, показывающего код устройства.

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

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

  6. Укажите подписку Azure , которой вы хотите воспользоваться.

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

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

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

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

    Снимок экрана: IP-адрес сервера и учетные данные.

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

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

    Снимок экрана: обнаруженное приложение ASP.NET.

  5. Установите флажок, чтобы выбрать приложения для контейнеризации.

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

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

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

  1. Выберите конфигурации приложений для проверки обнаруженных конфигураций.

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

  3. Выберите "Применить" после выбора конфигураций для параметризации.

    Скриншот параметризации конфигурации приложения ASP.NET.

Вынесение зависимостей файловой системы наружу

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

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

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

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

  4. Выберите постоянный том в качестве параметра хранилища, если требуется, чтобы папки хранились вне контейнера на постоянном томе.

  5. Нажмите кнопку "Сохранить " после просмотра папок приложения. Снимок экрана: выбор хранилища томов приложений.

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

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

Это важно

Если вы используете AKS 1.23+, измените скрипты, как показано ниже перед созданием образа Docker, чтобы обеспечить простую миграцию.

Измените приведенный ниже скрипт

# Run entrypoint script.
COPY ./Entryscript.ps1 c:/Entryscript.ps1
ENTRYPOINT powershell c:/Entryscript.ps1

Кому

# Run entrypoint script.
COPY ["./Entryscript.ps1", "c:/Entryscript.ps1"]
ENTRYPOINT ["powershell", "c:/Entryscript.ps1"]

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

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

    Снимок экрана для выбора приложения ACR.

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

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

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

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

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

Развертывание контейнерного приложения в AKS

После создания образа контейнера необходимо развернуть приложение в качестве контейнера в службе Azure Kubernetes (AKS).

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

    • Выбранный кластер AKS должен иметь пул узлов Windows.
    • Кластер должен быть настроен, чтобы разрешить извлечение образов из реестра контейнеров Azure, выбранного для хранения образов.
      • Выполните следующую команду в Azure CLI, чтобы подключить кластер AKS к ACR.
        az aks update -n <cluster-name> -g <cluster-resource-group> --attach-acr <acr-name>
        
    • Если у вас нет кластера AKS или вы хотите создать новый кластер AKS для развертывания приложения, вы можете создать его из средства, нажав кнопку "Создать новый кластер AKS".
      • Кластер AKS, созданный с помощью средства, будет создан с пулом узлов Windows. Кластер будет настроен для извлечения образов из созданного ранее реестра контейнеров Azure (если выбран параметр создания нового реестра).
    • Нажмите кнопку "Продолжить " после выбора кластера AKS.
  2. Укажите хранилище секретов: если вы решили параметризировать конфигурации приложений, укажите хранилище секретов, которое будет использоваться для приложения. Вы можете выбрать параметры приложения Azure Key Vault или приложения службы приложений для управления секретами приложения. Подробнее

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

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

    • Строка префикса: укажите строку префикса, используемую в имени всех ресурсов, созданных для контейнерного приложения в кластере AKS.
    • SSL-сертификат. Если приложению требуется привязка сайта https, укажите PFX-файл, содержащий сертификат, используемый для привязки. PFX-файл не должен быть защищен паролем, и исходный сайт не должен иметь несколько привязок.
    • Наборы реплик: укажите количество экземпляров приложений (подов), которые должны работать внутри контейнеров.
    • Тип подсистемы балансировки нагрузки: выберите внешний, если контейнерное приложение должно быть доступно из общедоступных сетей.
    • Конфигурация приложения. Для всех конфигураций приложений, которые были параметризованы, укажите значения, используемые для текущего развертывания.
    • Хранилище: Для любых папок приложений, настроенных для персистентного хранения объемов, укажите, следует ли разделять объем между экземплярами приложений или инициализировать объемы отдельно для каждого экземпляра в контейнере. По умолчанию все папки приложений на постоянных томах настраиваются как общие.
    • Нажмите кнопку "Применить" , чтобы сохранить конфигурацию развертывания.
    • Нажмите кнопку "Продолжить", чтобы развернуть приложение.

    Снимок экрана: конфигурация приложения развертывания.

  5. Разверните приложение: после сохранения конфигурации развертывания инструмент создаст YAML-файл развертывания Kubernetes для данного приложения.

    • Выберите Обзор, чтобы просмотреть и настроить YAML развертывания Kubernetes для приложений.

    • Выберите приложение для развертывания.

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

      Снимок экрана: конфигурация развертывания приложений.

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

Скачивание созданных артефактов

Все артефакты, используемые для сборки и развертывания приложения в AKS, включая файлы спецификаций Dockerfile и Kubernetes YAML, хранятся на компьютере, на котором запущено средство. Артефакты находятся в папке C:\ProgramData\Microsoft Azure Migrate App Containerization.

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

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

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

Дальнейшие шаги

  • Контейнеризация ASP.NET веб-приложений и их развертывание в контейнерах Windows в службе приложений. Дополнительные сведения.
  • Контейнеризация веб-приложений Java в Apache Tomcat (на серверах Linux) и их развертывание в виде контейнеров Linux в службе AKS. Дополнительные сведения.
  • Контейнеризация веб-приложений Java на серверах Apache Tomcat (на серверах Linux) и их развертывание на контейнерах Linux в службе приложений. Дополнительные сведения.