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


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

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

В настоящее время средство "Контейнеризация приложений" в Azure Migrate поддерживает -

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

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

  • Обнаружение приложения. Средство удаленно подключается к серверам приложений, на которых запущено веб-приложение 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 Migrate: контейнеризация приложений.
  • Откройте веб-приложение Java.
  • Создание образа контейнера.
  • Разверните контейнерное приложение в AKS.

Замечание

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

Предпосылки

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

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

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

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

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

— Приложения, работающие в Tomcat 8 или Tomcat 9.
— Серверы приложений в Ubuntu Linux 16.04/18.04/20.04, Debian 7/8, 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" с помощью портала 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: App Containerization на компьютер с системой Windows.

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

  3. Запуск скрипта установки с помощью команды

    .\AppContainerizationInstaller.ps1
    

Замечание

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

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

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

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

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

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

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

  5. Чтобы указать целевую службу Azure, выберите контейнеры в службе Azure Kubernetes. Загрузка по умолчанию для средства контейнеризации приложений.

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

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

Вход в Azure

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

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

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

    Модальный показ кода устройства.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 .

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

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