Развертывание приложения Java вручную с помощью Open Liberty/WebSphere Liberty в кластере Azure Red Hat OpenShift
В этой статье приводятся пошаговые инструкции по запуску Open/WebSphere Liberty в кластере Azure Red Hat OpenShift. В нем описано, как подготовить приложение Liberty, создать образ Docker приложения и запустить контейнерное приложение в кластере Azure Red Hat OpenShift.
В частности, вы узнаете, как выполнить следующие задачи:
- Подготовка приложения Liberty
- Создание образа приложения
- Запустите контейнерное приложение в кластере Azure Red Hat OpenShift с помощью графического интерфейса и интерфейса командной строки
Более автоматизированное решение, которое ускоряет переход к кластеру Azure Red Hat OpenShift, см. в статье Развертывание IBM WebSphere Liberty и Open Liberty в Azure Red Hat OpenShift с помощью предложения Azure Marketplace.
Дополнительные сведения об Open Liberty см. на странице проекта Open Liberty. Дополнительные сведения о WebSphere Liberty см . на странице продукта WebSphere Liberty.
Эта статья предназначена для быстрого развертывания. Прежде чем перейти к производству, вы должны исследовать Настройка Свободы.
Если вы заинтересованы в предоставлении отзывов или тесной работе с сценариями миграции с помощью группы разработчиков, разрабатывающей веб-sphere в решениях Azure, заполните этот короткий опрос по миграции WebSphere и включите контактные данные. Команда руководителей программ, архитекторов и инженеров будет быстро связаться с вами, чтобы начать тесное сотрудничество.
Внимание
Хотя Azure Red Hat OpenShift совместно работает, управляется и поддерживается Red Hat и Майкрософт для предоставления интегрированной поддержки, программного обеспечения, выполняемого на основе Azure Red Hat OpenShift, в том числе описанного в этой статье, распространяется на свои собственные условия поддержки и лицензии. Дополнительные сведения о поддержке Azure Red Hat OpenShift см. в статье "Жизненный цикл поддержки Azure Red Hat OpenShift 4". Дополнительные сведения о поддержке программного обеспечения, описанного в этой статье, см. на основных страницах этого программного обеспечения, как показано в статье.
Примечание.
Для создания и запуска кластера OpenShift в Azure Red Hat OpenShift требуется не менее 40 ядер. Стандартная квота ресурсов Azure для новой подписки Azure не соответствует этому требованию. Чтобы запросить увеличение лимита ресурсов, см . раздел "Стандартная квота: увеличение ограничений по рядам виртуальных машин". Обратите внимание на то, что бесплатная пробная подписка не дает права на увеличение квоты. Прежде чем запрашивать его, перейдите на подписку с оплатой по мере использования.
Необходимые компоненты
Локальный компьютер с установленной операционной системой, например Ubuntu, macOS или подсистема Windows для Linux.
Реализация Java выпуск Standard (SE), версия 17, например Eclipse Open J9.
Maven, версия 3.9.8 или более поздняя.
Docker для вашей ОС.
Azure CLI версии 2.61.0 или более поздней.
Кластер Azure Red Hat OpenShift 4. Чтобы создать кластер, следуйте инструкциям в статье "Создание кластера Azure Red Hat OpenShift 4" с помощью следующих инструкций:
Хотя шаг "Получить секрет извлечения Red Hat" помечен как необязательный, он необходим для этой статьи. Секрет для извлечения позволяет кластеру Azure Red Hat OpenShift найти Open Liberty Operator.
Следующие переменные среды, определенные в разделе "Создание кластера Azure Red Hat OpenShift 4", используются далее в этой статье.
RESOURCEGROUP
— имя группы ресурсов, в которой развернут кластер.CLUSTER
— имя кластера.
Если вы планируете запускать в кластере приложения, интенсивно использующие память, укажите соответствующий размер виртуальной машины для рабочих узлов с помощью параметра
--worker-vm-size
. Дополнительные сведения см. в следующих статьях:
Подключитесь к кластеру, выполнив действия, описанные в разделе "Подключение к кластеру Azure Red Hat OpenShift 4" с помощью следующих инструкций:
- Не забудьте выполнить действия, описанные в разделе "Установка интерфейса командной строки OpenShift", так как вы используете
oc
команду далее в этой статье. - Сохраните URL-адрес консоли кластера. Оно должно выглядеть так:
https://console-openshift-console.apps.<random>.<region>.aroapp.io/
. - Запишите учетные данные
kubeadmin
. - Обязательно выполните действия, описанные в разделе "Подключение с помощью интерфейса командной строки OpenShift" с
kubeadmin
учетными данными.
- Не забудьте выполнить действия, описанные в разделе "Установка интерфейса командной строки OpenShift", так как вы используете
Установка Open Liberty OpenShift Operator
После создания и подключения к кластеру выполните следующие действия, чтобы установить оператор Open Liberty. Главная начальная страница для Open Liberty Operator размещена на сайте GitHub.
Войдите в веб-консоль OpenShift из браузера, используя учетные данные пользователя
kubeadmin
.Перейдите к оператору>OperatorHub и найдите Open Liberty.
Выберите "Открыть свободу" в результатах поиска.
Выберите Установить.
На странице "Оператор установки" выполните следующие действия.
- Для канала обновления выберите последний канал версии 1.4.
- Для режима установки seelct All namespaces в кластере (по умолчанию).
- Для утверждения обновления выберите "Автоматически".
Нажмите кнопку "Установить" и подождите несколько минут до завершения установки.
Обратите внимание, что оператор Open Liberty успешно установлен и готов к использованию. Если он не готов, перед продолжением диагностики и устранения проблемы.
Примечание.
В этом руководстве устанавливается оператор Open Liberty для управления приложениями Liberty в кластере Azure Red Hat OpenShift. Если вы хотите использовать оператор WebSphere Liberty, выполните действия, описанные в статье "Установка оператора WebSphere Liberty" для установки оператора WebSphere Liberty в кластере.
Создание пространства имен OpenShift для приложения Java
Чтобы создать пространство имен OpenShift для использования с приложением, выполните следующие действия.
Убедитесь, что вы вошли в веб-консоль OpenShift из браузера с помощью
kubeadmin
учетных данных.Выберите Administration (Администрирование)>Namespaces (Пространства имен)>Create Namespace (Создать пространство имен).
В поле Name (Имя) укажите
open-liberty-demo
и нажмите кнопку Create (Создать), как показано ниже.
Создание сервера для Базы данных Azure для MySQL (Гибкий сервер)
База данных Azure для MySQL модель развертывания гибкого сервера — это режим развертывания, предназначенный для более детального управления и гибкости функций управления базами данных и параметров конфигурации, чем режим развертывания одного сервера База данных Azure для MySQL. В этом разделе показано, как создать экземпляр гибкого сервера База данных Azure для MySQL с помощью Azure CLI. Дополнительные сведения см. в кратком руководстве по созданию экземпляра База данных Azure для MySQL — гибкого сервера с помощью Azure CLI.
Выполните следующую команду в терминале, чтобы создать экземпляр гибкого сервера База данных Azure для MySQL. Замените <server-admin-password>
паролем, отвечающим требованиям к сложности паролей для гибкого сервера База данных Azure для MySQL.
az mysql flexible-server create \
--name ${CLUSTER} \
--resource-group ${RESOURCEGROUP} \
--admin-user admin${RESOURCEGROUP} \
--admin-password '<server-admin-password>' \
--database-name ${RESOURCEGROUP}db \
--public-access 0.0.0.0 \
--yes
Примечание.
В этой статье описано, как создать гибкий сервер База данных Azure для MySQL с проверкой подлинности MySQL. Более безопасная практика — использовать проверку подлинности Microsoft Entra для проверки подлинности подключения сервера базы данных. Azure Red Hat OpenShift в настоящее время не поддерживает Идентификация рабочей нагрузки Microsoft Entra, поэтому проверка подлинности MySQL является единственным доступным вариантом.
Если вы получаете сообщение об ошибке No available SKU в этом расположении, укажите другое расположение с помощью параметра и повторите попытку --location
. Используйте следующую команду, чтобы перечислить доступные номера SKU в определенном расположении:
az mysql flexible-server list-skus --location <location>
Найдите расположение, которое имеет доступные номера SKU, а затем повторите предыдущую az mysql flexible-server create
команду, но добавьте соответствующий --location <location>
параметр, оставив все остальные параметры без изменений.
Создание сервера, базы данных, пользователя администратора и правила брандмауэра, которое принимает подключения из всех ресурсов Azure, занимает несколько минут. Если команда выполнена успешно, выходные данные выглядят примерно так:
{
"connectionString": "mysql <database-name> --host <server-name>.mysql.database.azure.com --user <server-admin-username> --password=<server-admin-password>",
"databaseName": "<database-name>",
"firewallName": "AllowAllAzureServicesAndResourcesWithinAzureIps_2024-7-10_16-22-8",
"host": "<server-name>.mysql.database.azure.com",
"id": "/subscriptions/REDACTED/resourceGroups/<resource-group-of-the-OpenShift-cluster>/providers/Microsoft.DBforMySQL/flexibleServers/<server-name>",
"location": "West US",
"password": "<server-admin-password>",
"resourceGroup": "<resource-group-of-the-OpenShift-cluster>",
"skuname": "Standard_B1ms",
"username": "<server-admin-username>",
"version": "5.7"
}
Подготовка приложения Liberty
Мы используем приложение Java EE 8 в качестве примера в этом руководстве. Open Liberty — это сервер, полностью совместимый с Java EE 8, поэтому приложение будет работать без проблем. Сервер Open Liberty также полностью совместим с Jakarta EE 8.
Запуск приложения в Open Liberty
Чтобы запустить приложение в Open Liberty, необходимо создать файл конфигурации сервера Open Liberty. Это нужно для того, чтобы подключаемый модуль Liberty Maven мог упаковать приложение для развертывания. Подключаемый модуль Liberty Maven не требуется для развертывания приложения в OpenShift. Однако мы используем его в этом примере с режимом разработчика Open Liberty (dev). В режиме разработчика можно легко запускать приложение в локальной среде. Дополнительные сведения о liberty-maven-plugin
см. в статье Создание веб-приложения с помощью Maven.
Выполните действия, описанные в этом разделе, чтобы подготовить пример приложения для дальнейшего использования в этой статье. Для этих действий используется Maven и liberty-maven-plugin
.
Получение приложения для изменения
Используйте следующие команды, чтобы клонировать пример кода для этого руководства. Пример размещен на сайте GitHub.
git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro
export BASE_DIR=$PWD
git checkout 20240920
cd ${BASE_DIR}/3-integration/connect-db/mysql
Если появится сообщение об отключенном состоянии HEAD, это сообщение безопасно игнорировать. Это просто означает, что вы проверили тег.
В репозитории содержится несколько примеров. Мы используем open-liberty-on-aro/3-integration/connect-db/mysql. Ниже приведена структура файла приложения:
open-liberty-on-aro/3-integration/connect-db/mysql
├─ src/main/
│ ├─ aro/
│ │ ├─ db-secret.yaml
│ │ ├─ openlibertyapplication.yaml
│ ├─ liberty/config/
│ │ ├─ server.xml
│ ├─ java/
│ ├─ resources/
│ ├─ webapp/
├─ Dockerfile
├─ Dockerfile-wlp
├─ pom.xml
Каталоги java, java и webapp содержат исходный код примера приложения. В коде объявлен и используется источник данных с именем jdbc/JavaEECafeDB
.
В каталоге aro мы разместили два файла развертывания. db-secret.xml используется для создания секретов с учетными данными подключения к базе данных. Файл openlibertyapplication.yaml используется для развертывания образа приложения.
В корневом каталоге мы помещали два файла Dockerfile. Dockerfile и Dockerfile-wlp используются для локальной отладки и создания образа для развертывания Azure Red Hat OpenShift, работы с Open Liberty и WebSphere Liberty соответственно.
В каталоге liberty/config server.xml используется для настройки подключения к базе данных для кластера Open Liberty и WebSphere Liberty.
Сборка проекта
Используя переменные среды, определенные ранее, выполните следующие команды в терминале для сборки проекта. Файл POM для проекта считывает большинство свойств из среды.
cd ${BASE_DIR}/3-integration/connect-db/mysql
# The following variables are used for deployment file generation
export DB_SERVER_NAME=$CLUSTER.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=${RESOURCEGROUP}db
export DB_USER=admin${RESOURCEGROUP}
export DB_PASSWORD='<server-admin-password>'
export NAMESPACE=open-liberty-demo
mvn clean install
(Необязательно) Локальное тестирование приложения
При необходимости можно запустить приложение локально, чтобы убедиться, что оно работает должным образом. Сначала необходимо добавить правило брандмауэра, чтобы разрешить локальному компьютеру подключаться к экземпляру гибкого сервера База данных Azure для MySQL. Чтобы добавить правило брандмауэра, выполните следующие действия.
- Войдите в портал Azure и перейдите к созданному ранее экземпляру гибкого сервера База данных Azure для MySQL.
- В левой области выберите "Параметры>сети".
- Выберите Добавить текущий IP-адрес клиента.
- Нажмите кнопку "Сохранить " и дождитесь добавления правила брандмауэра.
Выполните следующие действия, чтобы выполнить liberty:devc
команду для локального запуска и тестирования образа проекта и контейнера перед выполнением любой сложности Azure. Дополнительные сведения о команде liberty:devc
см. в документации по подключаемому модулю Liberty.
При необходимости запустите локальную среду Docker. Инструкции для этой процедуры зависят от операционной системы сервера виртуальных машин.
Используйте следующие команды, чтобы запустить приложение в
liberty:devc
режиме:cd ${BASE_DIR}/3-integration/connect-db/mysql # If you are running with Open Liberty mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile # If you are running with WebSphere Liberty mvn liberty:devc -DcontainerRunOpts="-e DB_SERVER_NAME=${DB_SERVER_NAME} -e DB_PORT_NUMBER=${DB_PORT_NUMBER} -e DB_NAME=${DB_NAME} -e DB_USER=${DB_USER} -e DB_PASSWORD=${DB_PASSWORD}" -Dcontainerfile=Dockerfile-wlp
Убедитесь, что приложение работает правильно. В случае успеха в выходных данных команды должно появиться примерно такое сообщение:
[INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds.
. В браузере перейдите по адресуhttps://localhost:9443/
, чтобы убедиться, что приложение доступно и все функции работают.Чтобы остановить
liberty:devc
режим, нажмите клавиши Control+C.
Подготовка образа приложения
Чтобы развернуть и запустить приложение Liberty в кластере Azure Red Hat OpenShift, контейнеризируйте приложение как образ Docker с помощью образов контейнеров Open Liberty или образов контейнеров WebSphere Liberty.
Создание приложения и отправка в поток изображений
Так как вы уже успешно запустили приложение в контейнере Docker Liberty с помощью liberty:devc
команды, вы будете удаленно создавать образ в кластере, выполнив следующие действия:
Убедитесь, что вы войдите в интерфейс командной строки OpenShift с помощью
kubeadmin
учетных данных.Используйте следующие команды, чтобы определить исходный каталог и Dockerfile:
cd ${BASE_DIR}/3-integration/connect-db/mysql # If you are building with the Open Liberty base image, the existing Dockerfile is ready for you # If you are building with the WebSphere Liberty base image, uncomment and execute the following two commands to rename Dockerfile-wlp to Dockerfile # mv Dockerfile Dockerfile.backup # mv Dockerfile-wlp Dockerfile
Используйте следующую команду, чтобы изменить проект на open-liberty-demo:
oc project open-liberty-demo
Чтобы создать поток изображений, используйте следующую команду:
oc create imagestream javaee-cafe-mysql
Чтобы создать конфигурацию сборки, указывающую тег потока изображения выходных данных сборки, используйте следующую команду:
oc new-build --name javaee-cafe-mysql-config --binary --strategy docker --to javaee-cafe-mysql:v1
Используйте следующую команду, чтобы запустить сборку, чтобы отправить локальное содержимое, контейнеризацию и выходные данные в тег потока изображений, указанный ранее:
oc start-build javaee-cafe-mysql-config --from-dir . --follow
Развертывание приложения в кластере Azure Red Hat OpenShift
Теперь вы можете развернуть пример приложения Liberty в кластере Azure Red Hat OpenShift, созданном ранее при работе с предварительными условиями.
Развертывание приложения из веб-консоли
Так как мы используем оператор Open Liberty для управления приложениями Liberty, нам нужно создать экземпляр его пользовательского определения ресурсов типа OpenLibertyApplication
. Оператор заботится обо всех аспектах управления ресурсами OpenShift, необходимыми для развертывания. Чтобы создать этот экземпляр, выполните следующие действия.
Войдите в веб-консоль OpenShift из браузера, используя учетные данные пользователя
kubeadmin
.Выберите проект, перейдя на страницу home>Projects>open-liberty-demo.
Перейдите к секретам рабочих>нагрузок.
Выберите "Создать> из YAML".
Замените созданный yaml вашим, который находится в <пути к репозиторию>/3-integration/connect-db/mysql/target/db-secret.yaml.
Нажмите кнопку создания. Вы вернеесь на страницу сведений о секрете.
Выберите Operators (Операторы)>Installed Operators (Установленные операторы).
В середине страницы вы увидите Open Liberty.
В предоставленных API выберите OpenLibertyApplication. Навигация по элементам в пользовательском интерфейсе отражает фактическую иерархию вложенности используемых технологий.
Выберите "Создать OpenLibertyApplication".
Выберите представление YAML для настройки с помощью команды "Настроить".
Замените созданный yaml вашим, который находится в <пути к репозиторию>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml.
Нажмите кнопку создания. Вы вернеесь в список OpenLibertyApplications.
Перейдите к операторам, установленным операторам>>OpenLibertyApplication.>
Выберите javaee-café-mysql.
В середине страницы выберите Resources (Ресурсы).
В таблице выберите ссылку для javaee-café-mysql с типом маршрута.
На открывшейся странице щелкните ссылку в разделе Location (Расположение).
Домашняя страница приложения откроется в браузере.
Удаление приложения из веб-консоли
Когда вы закончите работу с приложением, выполните следующие действия, чтобы удалить приложение из Open Shift:
- В области навигации слева разверните элемент Operators (Операторы).
- Выберите Installed Operators (Установленные операторы).
- Выберите "Открыть свободу".
- В середине страницы выберите OpenLibertyApplication.
- Для javaee-café-mysql выберите вертикальный многоточие (три вертикальные точки), а затем выберите Удалить OpenLibertyApplication.
- Выберите "Удалить ", чтобы удалить приложение.
Чтобы удалить секрет из Open Shift, выполните следующие действия.
- Перейдите к секретам рабочих>нагрузок.
- Выберите db-secret-mysql.
- Выберите "Действия>удалить секрет".
- Выберите "Удалить ", чтобы удалить секрет.
Очистка ресурсов
Удалите кластер Azure Red Hat OpenShift, выполнив действия, описанные в руководстве. Удаление кластера Azure Red Hat OpenShift 4. Убедитесь, что база данных и все связанные ресурсы также удаляются.
Следующие шаги
Дополнительные сведения можно найти по следующим ссылкам:
- Open Liberty
- Azure Red Hat OpenShift
- Open Liberty Operator
- Настройка сервера Open Liberty
- Подключаемый модуль Liberty Maven
- Образы контейнеров Open Liberty
- Образы контейнеров WebSphere Liberty
Сведения о возможностях запуска продуктов WebSphere в Azure см. в статье "Что такое решения для запуска семейства продуктов WebSphere в Azure?"