在 Azure Red Hat OpenShift 群集上使用 Open Liberty/WebSphere Liberty 手动部署 Java 应用程序

本文提供了在 Azure Red Hat OpenShift 群集上运行 Open/WebSphere Liberty 的分步手动指南。 本文逐步讲解如何准备 Liberty 应用程序、生成应用程序 Docker 映像并在 Azure Red Hat OpenShift 群集上运行容器化应用程序。

具体而言,你将了解如何完成以下任务:

  • 准备 Liberty 应用程序
  • 生成应用程序映像
  • 使用 GUI 和 CLI 在 Azure Red Hat OpenShift 群集上运行容器化应用程序

有关加速 Azure Red Hat OpenShift 群集之旅的自动化解决方案,请参阅使用 Azure 市场 产品/服务在 Azure Red Hat OpenShift 上部署 IBM WebSphere Liberty 和 Open Liberty。

有关 Open Liberty 的详细信息,请参阅 Open Liberty 项目页。 有关 WebSphere Liberty 的详细信息,请参阅 WebSphere Liberty 产品页

本文旨在帮助你快速进行部署。 在进入生产环境之前,应探索 Tuning Liberty

如果你有兴趣提供反馈或与开发 WebSphere on Azure 解决方案的工程团队就迁移方案展开密切合作,请填写这份简短的有关 WebSphere 迁移的调查并提供联系人信息。 项目经理、架构师和工程师团队会及时与你联系,以开展密切合作。

重要

虽然 Azure Red Hat OpenShift 由 Red Hat 联合设计、运营和支持,Microsoft以提供集成支持体验,但运行在 Azure Red Hat OpenShift 之上的软件(包括本文中所述的软件)受其自己的支持和许可条款的约束。 有关 Azure Red Hat OpenShift 支持的详细信息,请参阅 Azure Red Hat OpenShift 4 的支持生命周期。 有关本文中介绍的软件支持的详细信息,请参阅本文中列出的该软件的主页。

注意

Azure Red Hat OpenShift 至少需要 40 个核心才能创建和运行 OpenShift 群集。 新 Azure 订阅的默认 Azure 资源配额不满足此要求。 若要请求提高资源上限,请参阅标准配额:按 VM 系列提高上限中所述。 请注意,免费试用订阅无法增加配额,请升级到即用即付订阅再请求增加配额。

先决条件

完成以下先决条件以成功使用本指南:

  1. 准备一台安装了类似于 Unix 的操作系统(例如 Ubuntu、macOS 或适用于 Linux 的 Windows 子系统)的本地计算机。

  2. 安装 Java Standard Edition (SE) 实施版本 17 或更高版本(例如 Eclipse Open J9)。

  3. 安装 Maven 3.5.0 或更高版本。

  4. 安装适用于 OS 的 Docker

  5. 安装 Azure CLI 2.0.75 或更高版本。

  6. 根据需要安装 envsubst

  7. 在本地系统上克隆此示例的代码。 该示例位于 GitHub 上。

  8. 按照创建 Azure Red Hat OpenShift 4 群集中的说明进行操作。

    尽管“获取 Red Hat 请求机密”这一步标记为可选步骤,但本文仍需要此步骤。 请求机密允许 Azure Red Hat OpenShift 群集查找 Open Liberty Operator。

    如果你打算在群集上运行内存密集型应用程序,请使用 --worker-vm-size 参数为工作器节点指定适当的虚拟机大小。 例如,Standard_E4s_v3 是在群集上安装 Elasticsearch Operator 的最小虚拟机大小。 有关详细信息,请参阅:

  9. 按照连接到 Azure Red Hat OpenShift 4 群集中的步骤连接到该群集。

    • 请务必按照“安装 OpenShift CLI”中的步骤操作,因为本文后面的部分使用 oc 命令。
    • 将群集控制台 URL 保存到一边。 它看起来应该类似于:https://console-openshift-console.apps.<random>.<region>.aroapp.io/
    • 记下 kubeadmin 凭据。
    • 请确保使用 kubeadmin 凭证遵循“使用 OpenShift CLI 连接”中的步骤。

安装 Open Liberty OpenShift Operator

创建并连接到群集后,使用以下步骤安装 Open Liberty 操作员。 Open Liberty Operator 的主要起始页位于 GitHub 上。

  1. 使用 kubeadmin 凭据从浏览器登录到 OpenShift Web 控制台。

  2. 导航到“Operator”>“OperatorHub”并搜索“Open Liberty”

  3. 从搜索结果中选择“Open Liberty”

  4. 选择“安装” 。

  5. 在“安装操作员”页中,检查 v1.3 以获取更新通道群集上的所有命名空间(默认)是否为安装模式,以及自动进行更新审批

    为 Open Liberty Operator 创建操作员订阅的屏幕截图。

  6. 选择“安装”并等待一两分钟,直到安装完成

  7. 请注意,Open Liberty 运算符已成功安装并可供使用。 如果尚未准备就绪,请在继续之前诊断并解决问题。

    显示已安装 Open Liberty 的“安装的 Operator”。

创建 Java 应用的 OpenShift 命名空间

使用以下步骤创建用于应用的 OpenShift 命名空间:

  1. 请确保使用 kubeadmin 凭据从浏览器登录到 OpenShift Web 控制台。

  2. 导航到“管理”>“命名空间”>“创建命名空间”

  3. 在“名称”中填写 open-liberty-demo 并选择“创建”,如下所示

    创建命名空间的屏幕截图。

创建 Azure Database for MySQL

使用以下步骤设置用于应用的 Azure Database for MySQL:

  1. 按照以下步骤创建 Azure Database for MySQL 灵活服务器:快速入门:使用Azure 门户创建 Azure Database for MySQL 灵活服务器。 可以将数据库部署到与 OpenShift 群集相同的资源组。 在创建该数据库后,请返回到此文档。

    注意

    “基本信息 ”步骤中,请保留 服务器名称.mysql.database.azure.com管理员用户名密码 值。

  2. 创建数据库后,打开数据库>设置>网络,然后使用以下步骤:

    1. 在“公共访问”下,确保已选择使用公共 IP 地址通过 Internet 访问此资源的公共访问。
    2. 选择“ 允许从 Azure 中的任何 Azure 服务公开访问此服务器”。
    3. 确保客户端 IPv4 地址位于防火墙规则允许列表中。
    4. 保存所做更改。

    配置 mysql 数据库网络的屏幕截图。

  3. 打开数据库>设置>数据库>选择“添加”。 填写“名称”值,然后选择“保存以创建新数据库。 此数据库具有 方案类型 作为 用户 ,稍后将用于应用程序。

    注意

    保存所创建数据库的名称

准备 Liberty 应用程序

我们将 Java EE 8 应用程序用作本指南中的示例。 Open Liberty 是兼容 Java EE 8 完整配置文件的服务器,因此它可以轻松地运行该应用程序。 Open Liberty 也兼容 Jakarta EE 8 完整配置文件

在 Open Liberty 上运行应用程序

若要在 Open Liberty 上运行应用程序,需要创建 Open Liberty 服务器配置文件,以便 Liberty Maven 插件可以打包应用程序进行部署。 将应用程序部署到 OpenShift 不需要 Liberty Maven 插件。 但是,我们在此示例中将其与 Open Liberty 的开发人员(开发)模式配合使用。 开发人员模式允许在本地轻松运行应用程序。 如需详细了解 liberty-maven-plugin,请参阅使用 Maven 构建 Web 应用程序

按照本部分中的步骤准备示例应用程序,以便在本文中稍后使用。 这些步骤使用 Maven 和 liberty-maven-plugin

签出应用程序

使用以下命令克隆本指南的示例代码。 该示例位于 GitHub 上。

git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro

存储库中有一些示例。 我们使用 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”、“resources”和“webapp”包含示例应用程序的源代码 。 代码声明并使用名为 jdbc/JavaEECafeDB 的数据源。

在 aro 目录中,我们放置了两个部署文件 db-secret.xml用于使用数据库连接凭据创建机密。 openlibertyapplication.yaml 文件用于部署应用程序映像。

在根目录中,我们放置了两个 Dockerfiles。 DockerfileDockerfile-wlp 用于本地调试,并为 Azure Red Hat OpenShift 部署生成映像,分别使用 Open Liberty 和 WebSphere Liberty。

liberty/config 目录中, server.xml 用于配置 Open Liberty 和 WebSphere Liberty 群集的数据库连接。

生成项目

收集必要的属性后,请使用以下命令生成应用程序。 项目的 POM 文件从环境中读取多个属性。

cd <path-to-your-repo>/open-liberty-on-aro/3-integration/connect-db/mysql

# The following variables are used for deployment file generation
export DB_SERVER_NAME=<Server name>.mysql.database.azure.com
export DB_PORT_NUMBER=3306
export DB_NAME=<Database name>
export DB_USER=<Server admin username>
export DB_PASSWORD=<Server admin password>
export NAMESPACE=open-liberty-demo

mvn clean install

在本地测试应用程序

使用以下步骤运行 liberty:devc 命令以在本地运行并测试项目和容器映像,然后再处理任何 Azure 复杂性。 有关 liberty:devc 的详细信息,请参阅 Liberty 插件文档

  1. 根据需要启动本地 Docker 环境。 执行此操作的说明因主机操作系统而异。

  2. 使用以下命令在模式下启动应用程序 liberty:devc

    cd <path-to-your-repo>/open-liberty-on-aro/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
    
  3. 验证应用程序是否按预期方式工作。 如果成功,你应该会在命令输出中看到类似于 [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. 的消息。 在浏览器中转到 https://localhost:9443/,验证应用程序是否可访问,所有功能是否正常运作。

  4. 若要停止 liberty:devc 模式,请按 Control+C

准备应用程序映像

若要在 Azure Red Hat OpenShift 群集上部署并运行 Liberty 应用程序,请使用 Open Liberty 容器映像WebSphere Liberty 容器映像将应用程序容器化为 Docker 映像

生成应用程序并推送到映像流

由于已使用 liberty:devc 命令成功在 Liberty Docker 容器中运行应用,你将使用以下步骤在群集上远程生成映像:

  1. 请确保使用 kubeadmin 凭据登录到 OpenShift CLI。

  2. 使用以下命令标识源目录和 Dockerfile:

    cd <path-to-your-repo>/open-liberty-on-aro/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
    
  3. 使用以下命令将项目更改为 open-liberty-demo

    oc project open-liberty-demo
    
  4. 使用以下命令创建图像流:

    oc create imagestream javaee-cafe-mysql
    
  5. 使用以下命令创建生成配置,该配置可指定生成输出的映像流标记:

    oc new-build --name javaee-cafe-mysql-config --binary --strategy docker --to javaee-cafe-mysql:v1
    
  6. 使用以下命令启动生成,以将本地内容上传、容器化以及输出到之前指定的映像流标记:

    oc start-build javaee-cafe-mysql-config --from-dir . --follow
    

在 Azure Red Hat OpenShift 群集上部署应用程序

现在,可以在完成先决条件时将示例 Liberty 应用程序部署到之前创建的 Azure Red Hat OpenShift 群集。

从 Web 控制台部署应用程序

由于我们使用 Open Liberty 运算符来管理 Liberty 应用程序,因此需要创建其 自定义资源定义的实例(类型 OpenLibertyApplication)。 操作员负责管理部署所需的 OpenShift 资源的所有方面。 使用以下步骤创建此实例:

  1. 使用 kubeadmin 凭据从浏览器登录到 OpenShift Web 控制台。

  2. 展开“主页”并选择“项目”>“open-liberty-demo”

  3. 导航到“Operator”>“安装的 Operator”

  4. 在页面中间,你将看到 Open Liberty

  5. 提供的 API 中,选择 OpenLibertyApplication。 用户界面中的项目导航反映了所使用的技术的实际包含层次。

    Azure Red Hat OpenShift Java 包含示意图。

  6. 选择“ 创建 OpenLibertyApplication”。

  7. 选择用于配置的 YAML 视图

  8. 将生成的 yaml 替换为 yours,它位于 <path-to-repo>/3-integration/connect-db/mysql/target/openlibertyapplication.yaml

  9. 选择创建。 返回到 OpenLibertyApplications 列表。

  10. 导航到“工作负载”>“机密”

  11. 选择“创建”>“从 YAML”

  12. 将生成的 yaml 替换为 yours,该 yaml 位于 <path-to-repo>/3-integration/connect-db/mysql/target/db-secret.yaml

  13. 选择创建。 返回到“机密详细信息”页。

  14. 导航到安装了运算符的运算符>>Open Liberty>OpenLibertyApplication。

  15. 选择“javaee-cafe-mysql”

  16. 在页面中间选择“资源”

  17. 在表中,选择“种类”为“路由”的“javaee-cafe-mysql”的链接

  18. 在打开的页面上选择“位置”下方的链接

应用程序主页将在浏览器中打开。

从 Web 控制台删除应用程序

完成应用程序操作后,请使用以下步骤从 Open Shift 中删除应用程序:

  1. 在左侧导航窗格中展开“Operator”的条目
  2. 选择“安装的 Operator”
  3. 选择“ 打开自由”。
  4. 在页面中间,选择 OpenLibertyApplication
  5. 对于 javaee-café-mysql,请选择垂直省略号(三个垂直点),然后选择“ 删除 OpenLibertyApplication”。
  6. 选择“删除”以删除应用程序。

使用以下步骤从 Open Shift 中删除机密:

  1. 导航到“工作负载”>“机密”
  2. 选择 db-secret-mysql
  3. 选择“操作>删除机密”。
  4. 选择“删除”以删除机密。

清理资源

按照教程中的 步骤删除 Azure Red Hat OpenShift 群集:删除 Azure Red Hat OpenShift 4 群集。 请确保数据库和任何关联的资源也被删除。

后续步骤

可以从本指南中使用的参考资料中了解到更多信息:

若要浏览在 Azure 上运行 WebSphere 产品的选项,请参阅 在 Azure 上运行 WebSphere 产品系列的解决方案是什么?