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

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию конца жизни (EOL). Пожалуйста, рассмотрите возможность использования и планирования соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

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

В настоящее время поддерживается средство миграции Azure:

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

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

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

Примечание.

  • Инструмент контейнеризации приложений службы "Миграция Azure" помогает обнаруживать приложения определенных типов (ASP.NET и веб-приложения Java в Apache Tomcat) и их компоненты на сервере приложений. Чтобы обнаружить серверы и составить список приложений, ролей и функций, выполняемых на локальных компьютерах, используйте возможность обнаружения и оценки службы "Миграция Azure". Подробнее.
  • Средство контейнеризации приложений пропускает обнаружение некоторых веб-приложений Tomcat по умолчанию, таких как "docs", "examples", "host-manager", "manager" и "ROOT".

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

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

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

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

Примечание.

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

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

Для работы с этим руководством вам потребуется:

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

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

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

Этот компьютер с Windows должен иметь доступ к Интернету (напрямую или через прокси-сервер).
Серверы приложений Включите подключение Secure Shell (SSH) через порт 22 на серверах, на которых запущены приложения Java, для контейнеризации.
веб-приложение Java; В настоящее время средство поддерживает следующее:

— Приложения, работающие в Tomcat 8 или Tomcat 9.
Серверы приложений на Ubuntu Linux версий 16.04, 18.04 и 20.04, Debian версий 7 и 8, CentOS версий 6 и 7, Red Hat Enterprise Linux версий 5, 6 и 7.
— Приложения с помощью Java 7 или Java 8.
Если у вас вне этой версии, найдите образ, поддерживающий необходимые версии, и измените dockerfile для замены образа.

В настоящее время средство не поддерживает:

— Серверы приложений с несколькими экземплярами Tomcat

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

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

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

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

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

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

    Поле для поиска подписки Azure.

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

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

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

  5. В разделе Добавление назначения роли щелкните Добавить.

    Выполните поиск учетной записи пользователя для проверки доступа и назначения роли.

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

    Откройте страницу

Вашей учетной записи Azure также требуются разрешения для регистрации приложений Microsoft Entra. 8. В портал Azure перейдите к Параметры пользователей>идентификатора> Майкрософт. 9. В параметрах пользователя проверьте, могут ли пользователи Microsoft Entra зарегистрировать приложения (по умолчанию задано значение "Да ").

Убедитесь, что пользователи могут регистрировать приложения Active Directory, в разделе

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

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

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

  2. Запустите PowerShell в режиме администратора и перейдите в сеансе PowerShell к папке, содержащей установщик.

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

    .\AppContainerizationInstaller.ps1
    

Примечание.

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

Запуск инструмента контейнеризации приложений

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

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

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

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

  4. В качестве типа приложения, для которого требуется выполнить контейнеризацию, выберите Java web apps on Tomcat (Веб-приложения Java в Tomcat).

  5. Чтобы указать целевую службу Azure, щелкните Containers on Azure App Service (Контейнеры в Службе приложений Azure). Загрузка по умолчанию для инструмента контейнеризации приложений.

Заполнение требуемых данных для инструмента

  1. Примите условия лицензионного соглашения и ознакомьтесь со сторонними сведениями.
  2. В веб-приложении >средства настройте необходимые компоненты, выполните следующие действия.
    • Connectivity (Подключение). Инструмент убедится, что у компьютера с Windows есть доступ к Интернету. Если компьютер использует прокси-сервер:
      • Щелкните "Настройка прокси-сервера ", чтобы указать прокси-адрес (в виде IP-адреса или полное доменное имя) и прослушивающий порт.
      • Укажите учетные данные, если для прокси-сервера требуется аутентификация.
      • Поддерживается только прокси-сервер HTTP.
      • Если вы добавили сведения о прокси-сервере или отключили прокси-сервер или проверку подлинности, нажмите кнопку "Сохранить", чтобы активировать подключение проверка еще раз.
    • Install updates (Установить обновления). Инструмент автоматически проверит наличие обновлений и установит их. Вы также можете вручную установить последнюю версию средства, которая доступна здесь.
    • Enable Secure Shell (SSH) (Включить Secure Shell (SSH)). Инструмент сообщит, включен ли протокол Secure Shell (SSH) на серверах приложений, на которых работают веб-приложения Java, выбранные для контейнеризации.

Вход в Azure

Войдите в свою учетную запись Azure, щелкнув Войти.

  1. Для аутентификации в Azure вам потребуется код устройства. При нажатии кнопки "Вход" откроется модальный код устройства.

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

    Модальное окно с кодом устройства.

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

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

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

Обнаружение веб-приложений Java

Вспомогательный инструмент контейнеризации приложений удаленно подключится к серверам приложений с использованием предоставленных учетных данных и попытается обнаружить приложения Java (запущенные в Apache Tomcat), размещенные на этих серверах приложений.

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

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

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

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

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

    Снимок экрана: обнаруженное веб-приложение Java.

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

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

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

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

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

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

  3. Завершив выбор конфигураций для параметризации, щелкните Apply (Применить).

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

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

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

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

  2. Щелкните Add folders (Добавить папки) и укажите пути к добавляемым папкам.

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

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

  5. Завершив просмотр папок приложения, щелкните Save (Сохранить). Снимок экрана: выбор томов хранилища для приложения.

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

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

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

    Снимок экрана: выбор Реестра контейнеров Azure.

Примечание.

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

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

  2. Настройка Application Insights. Вы можете включить мониторинг приложений Java, работающих в Службе приложений, без инструментирования кода. Средство установит автономный агент Java в составе образа контейнера. После настройки во время развертывания агент Java будет автоматически собирать запросы, зависимости, журналы и метрики для вашего приложения. Их можно использовать для мониторинга с помощью Application Insights. По умолчанию этот параметр включен для всех приложений Java.

  3. Активируйте процесс сборки. Выберите приложения, для которых нужно создать образы, и щелкните Build (Выполнить сборку). Нажатие на элемент Сборка запустит сборку образа контейнера для каждого приложения. Инструмент постоянно отслеживает состояние сборки и позволяет перейти к следующему шагу только после успешного завершения сборки.

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

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

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

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

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

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

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

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

    • Если у вас еще нет общей папки Azure или вы намерены использовать новую общую папку Azure, ее можно создать непосредственно в интерфейсе инструмента, щелкнув Create new Storage Account and file share (Создать учетную запись хранения и общую папку).
  4. Конфигурация развертывания приложения. После завершения всех описанных выше шагов вам нужно лишь указать конфигурацию развертывания для приложения. Щелкните Configure (Настроить), чтобы изменить развертывание для приложения. На этапе настройки вы можете изменить следующие параметры:

    • Name (Имя): укажите уникальное имя приложения. Это имя будет использоваться при создании URL-адреса приложения и в качестве префикса для других ресурсов, создаваемых в рамках этого развертывания.
    • Application configuration (Конфигурация приложения): для всех параметризованных конфигураций приложения укажите значения, которые необходимо использовать для текущего развертывания.
    • Storage configuration (Конфигурация хранилища): проверьте сведения о каталогах и папках приложений, настроенных для постоянного хранилища.

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

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

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

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

    • Щелкните Deploy (Развернуть), чтобы начать развертывание выбранных приложений.

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

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

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

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

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

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