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

Внимание

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

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

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

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

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

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

Примечание.

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

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

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

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

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

Примечание.

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

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

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

Требование Сведения
Выбор компьютера для установки инструмента Компьютер с 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. Назначьте следующую роль. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

    Параметр Значение
    Роль Ответственный
    Назначить доступ для User
    Участники azmigrateuser (в этом примере)

    Страница

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

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

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

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

  9. Если для параметра "Регистрация приложений" задано значение "Нет", попросите администратора арендатора или глобального администратора назначить необходимое разрешение. Кроме того, администратор клиента или глобального администратора может назначить роль разработчика приложений учетной записи, чтобы разрешить регистрацию приложения 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 Kubernetes). Загрузка по умолчанию для инструмента контейнеризации приложений.

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

  1. Примите условия лицензии и прочитайте информацию от сторонних производителей.
  2. В веб-приложении >средства настройте необходимые компоненты, выполните следующие действия.
    • Connectivity (Подключение). Инструмент убедится, что у компьютера с Windows есть доступ к Интернету. Если компьютер использует прокси-сервер:
      • Щелкните Set up proxy (Настроить прокси-сервер), чтобы указать IP-адрес или полное доменное имя прокси-сервера и порт прослушивания.
      • Укажите учетные данные, если для прокси-сервера требуется аутентификация.
      • Поддерживается только прокси-сервер HTTP.
      • Если вы уже добавили сведения о прокси-сервере либо отключили его и (или) аутентификацию, щелкните Save (Сохранить), чтобы снова запустить проверку подключения.
    • 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. Щелкните app configurations (Конфигурации приложений), чтобы просмотреть обнаруженные конфигурации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  5. Следите за состоянием сборки. Вы можете самостоятельно проверить ход этапов сборки, щелкнув ссылку Build in Progress (Выполняемая сборка) в столбце состояния. Эта ссылка становится активной через пару минут после начала процесса сборки.

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

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

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

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

  1. Выберите кластер Службы Azure Kubernetes. Укажите кластер AKS, в котором нужно развернуть это приложение.

    • Выбранный кластер AKS должен содержать пул узлов Linux.
    • В этом кластере необходимо настроить извлечение образов из Реестра контейнеров Azure, который вы ранее выбрали для хранения образов.
      • Чтобы подключить кластер AKS к Реестру контейнеров Azure, выполните приведенную ниже команду в интерфейсе командной строки Azure.
        az aks update -n <cluster-name> -g <cluster-resource-group> --attach-acr <acr-name>
        
    • Если у вас еще нет кластера AKS или вы намерены создать кластер AKS специально для развертывания конкретного приложения, кластер можно создать непосредственно в интерфейсе инструмента, щелкнув Create new AKS cluster (Создать кластер AKS).
      • Созданный с помощью инструмента кластер AKS будет содержать пул узлов Linux. Также для этого кластера будет настроено извлечение образов из ранее созданного Реестра контейнеров Azure, если вы выбрали такой вариант.
    • Завершив выбор кластера AKS, щелкните Continue (Продолжить).
  2. Укажите хранилище секретов и рабочую область мониторинга. Если вы выбрали вариант параметризации конфигурации приложений, укажите хранилище секретов, которое необходимо использовать для приложения. Вы можете выбрать секреты Azure Key Vault или Kubernetes для управления секретами приложения.

    • Если вы выбрали секреты Kubernetes для управления секретами, нажмите кнопку Продолжить.
    • Если для управления секретами приложения вы хотите использовать Azure Key Vault, укажите хранилище Azure Key Vault, которое нужно использовать.
      • Если у вас нет хранилища Azure Key Vault либо вам нужно новое хранилище Key Vault, вы можете создать его в средстве, нажав кнопку Create new (Создать).
      • Средство автоматически назначит необходимые разрешения для управления секретами с помощью 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 (Настроить), чтобы изменить развертывание для приложения. На этапе настройки вы можете изменить следующие параметры:

    • Prefix string (Строка префикса): эта строка будет использоваться как префикс имени для всех ресурсов, которые создаются для контейнерного приложения в кластере AKS.
    • Replica Sets (Наборы реплик): укажите количество экземпляров (pod) приложения, которые должны выполняться внутри контейнеров.
    • Load balancer type (Тип подсистемы балансировки нагрузки): выберите параметр External (Внешняя), если контейнерное приложение должно быть доступно из публичных сетей.
    • Application Configuration (Конфигурация приложения): для всех параметризованных конфигураций приложения здесь нужно указать конкретные значения для текущего развертывания.
    • Storage (Хранилище): для всех папок приложения, для которых настроено хранение в постоянном томе, нужно указать, будут ли все экземпляры приложения использовать один том или следует инициализировать отдельный том для каждого экземпляра в контейнере. По умолчанию все папки приложений на постоянных томах настраиваются как совместно используемые.
    • Щелкните Apply (Применить), чтобы сохранить конфигурацию развертывания.
    • Щелкните Continue (Продолжить), чтобы развернуть приложение.

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

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

    • Щелкните Review (Проверить), чтобы проверить и изменить YAML-файл для развертывания в Kubernetes.

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

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

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

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

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

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

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

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

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

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

  • Контейнеризация веб-приложений Java в Apache Tomcat (на серверах Linux) и их развертывание в виде контейнеров Linux в Службе приложений. Подробнее
  • Контейнеризация веб-приложений ASP.NET и их развертывание в виде контейнеров Windows в службе AKS. Подробнее
  • Контейнеризация веб-приложений ASP.NET и их развертывание в виде контейнеров Windows в Службе приложений Azure. Подробнее
  • Что такое решения для запуска Oracle WebLogic Server в службе Azure Kubernetes? Подробнее
  • Open Liberty и WebSphere Liberty на AKS. Подробнее