教程:将 Oracle WebLogic Server 迁移到自定义虚拟网络中的Azure Kubernetes 服务

本教程介绍如何在与使用者订阅中的自定义虚拟网络集成的 Azure Kubernetes 服务 (AKS) 产品/服务上部署 Oracle WebLogic Server (WLS)。 AKS 产品/服务上的 WLS 允许你决定是否创建新的虚拟网络或使用现有虚拟网络。

本教程介绍如何执行下列操作:

  • 创建自定义虚拟网络并在网络中创建基础结构。
  • 在自定义虚拟网络中的 AKS 上运行 Oracle WebLogic Server。
  • 使用 Azure 应用程序网关 公开 Oracle WebLogic Server 作为负载均衡器。
  • 验证成功的部署。

先决条件

  • 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户

  • 使用 Bash 环境使用 Azure Cloud Shell ;请确保 Azure CLI 版本为 2.37.0 或更高版本。

    Launch Cloud Shell in a new window

  • 如果需要, 请安装 Azure CLI 2.37.0 或更高版本 以运行 Azure CLI 命令。

    • 如果使用的是本地安装,请通过 Azure CLI 使用 az login 命令登录。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 登录。
    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展
    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade
  • AKS 市场产品/服务的 WLS 需要有权创建用户分配的托管标识并分配 Azure 角色。 若要分配 Azure 角色,必须拥有 Microsoft.Authorization/roleAssignments/write 权限,例如用户访问管理员所有者

  • Oracle 帐户。 Oracle 容器注册表中的步骤将指示你接受 WebLogic Server 映像的许可协议。 记下 Oracle 帐户密码和电子邮件。

创建资源组

使用 az group create 创建资源组。 此示例创建一个名为位置的eastus资源组myResourceGroup

export RESOURCE_GROUP_NAME="myResourceGroup"
az group create \
    --name ${RESOURCE_GROUP_NAME} \
    --location eastus

创建自定义虚拟网络

创建自定义虚拟网络时存在约束。 在环境中创建虚拟网络之前,请阅读以下文章:

本部分中的示例创建具有地址空间192.168.0.0/16的虚拟网络,并创建两个用于 AKS 和应用程序网关的子网。

首先,使用 az network vnet create 创建虚拟网络。 以下示例创建一个名为 myVNet: 的默认虚拟网络:

az network vnet create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myVNet \
    --address-prefixes 192.168.0.0/16

接下来,使用 az network vnet subnet create 为 AKS 群集创建 子网。 以下示例创建名为 myAKSSubnet 的子网:

az network vnet subnet create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myAKSSubnet \
    --vnet-name myVNet \
    --address-prefixes 192.168.1.0/24

接下来,使用 az network vnet subnet create for 应用程序网关 创建子网。 以下示例创建名为 myAppGatewaySubnet 的子网:

az network vnet subnet create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myAppGatewaySubnet \
    --vnet-name myVNet \
    --address-prefixes 192.168.2.0/24

接下来,使用以下命令获取 AKS 子网资源 ID 并将其存储在变量中,供本文稍后使用:

export AKS_SUBNET_ID=$(az network vnet subnet show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --vnet-name myVNet \
    --name myAKSSubnet \
    --query id \
    --output tsv)

在虚拟网络中创建 AKS 群集

使用以下命令通过 az aks create 命令在虚拟网络和子网中创建 AKS 群集。

注意

此示例使用 kubenet 和系统分配的标识创建 AKS 群集。 创建群集后,Azure CLI 将向系统分配的标识授予 网络参与者 角色。

若要使用 Azure CNI,请参阅 在 AKS 中配置 Azure CNI 网络以创建 已启用 Azure CNI 的 AKS 群集。

如果要使用用户分配的托管标识,请参阅 创建具有系统分配的托管标识的 AKS 群集。

az aks create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myAKSCluster \
    --generate-ssh-keys \
    --enable-managed-identity \
    --node-count 3 \
    --network-plugin kubenet \
    --vnet-subnet-id $AKS_SUBNET_ID \
    --yes

将 Java 企业版 应用程序存储在存储帐户中

可以在 AKS 产品/服务部署上部署 Java 企业版 应用程序以及 WLS。 必须将应用程序文件(.war.ear.jar)上传到预先存在的Azure 存储帐户,并在该帐户中存储容器。

使用 az storage account create 命令创建Azure 存储帐户,如以下示例所示:

export STORAGE_ACCOUNT_NAME="stgwlsaks$(date +%s)"
az storage account create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name ${STORAGE_ACCOUNT_NAME} \
    --location eastus \
    --sku Standard_RAGRS \
    --kind StorageV2

可以使用 az storage container create 命令创建用于存储 blob 的容器。 以下示例使用存储帐户密钥来授权操作创建容器。 还可以使用 Microsoft Entra 帐户授权操作以创建容器。 有关详细信息,请参阅使用 Azure CLI 授权访问 blob 或队列数据

export KEY=$(az storage account keys list \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --account-name ${STORAGE_ACCOUNT_NAME} \
    --query [0].value \
    --output tsv)

az storage container create \
    --account-name ${STORAGE_ACCOUNT_NAME} \
    --name mycontainer \
    --account-key ${KEY} \
    --auth-mode key

接下来,使用 az storage blob upload 命令将 Java 企业版 应用程序上传到 blob。 以下示例上传 testwebapp.war 测试应用程序。

curl -fsL https://aka.ms/wls-aks-testwebapp -o testwebapp.war

az storage blob upload \
    --account-name ${STORAGE_ACCOUNT_NAME} \
    --container-name mycontainer \
    --name testwebapp.war \
    --file testwebapp.war \
    --account-key ${KEY} \
    --auth-mode key

若要同时上传多个文件,请参阅 使用 Azure CLI 创建、下载和列出 Blob。

在 AKS 产品/服务上部署 WLS

本部分介绍如何使用之前创建的 AKS 实例预配 WLS 群集。 你将在自定义虚拟网络中预配群集,并使用Azure 应用程序网关作为负载均衡器导出群集节点。 产品/服务将自动生成自签名证书,用于应用程序网关 TLS/SSL 终止。 有关 TLS/SSL 终止与应用程序网关的高级用法,请参阅应用程序网关入口控制器

首先,按照 AKS 用户指南上的 Oracle WebLogic Server 中所述开始部署 WebLogic Server 的过程,但在到达“配置 AKS 群集”时返回到此页面,如以下屏幕截图所示。

Screenshot of Azure portal showing the Configure AKS cluster pane of the Create Oracle WebLogic Server on Azure Kubernetes Service page.

配置 AKS 群集

在虚拟网络中拥有 AKS 群集后,请选择部署的 AKS 群集。

  1. 对于 “创建新的 AKS 群集?”,请选择“ ”。
  2. 在“选择 AKS 群集”下,打开下拉菜单,然后选择创建的 AKS 群集,在本示例中命名myAKSCluster
  3. 若要使用 Oracle 容器注册表中预先存在的 WebLogic Server Docker 映像,请选择“是”。
  4. 若要创建新的Azure 容器注册表来存储应用程序映像?,请选择“”。
  5. 在 Oracle 单一登录身份验证的“用户名”下,输入 Oracle 单一登录帐户用户名。
  6. 在 Oracle 单一登录身份验证的密码下,输入该帐户的密码。
  7. 在“确认密码”下,重新输入上述字段的值。
  8. 对于 WebLogic Server、JDK 和操作员系统或完全限定的 Docker 标记的所需组合,请保留默认值。
  9. 对于 “部署应用程序包”,请选择“ ”。
  10. 对于 应用程序包(.war、.ear、.jar),请选择“ 浏览”。
    • 选择创建的存储帐户。 stgwlsaks名称以此示例开头。
    • 在“容器”页中选择容器。 本示例使用 mycontainer
    • 检查容器中列出的应用程序。 此示例使用 testwebapp.war
    • 选择“选择”。
  11. 对于其他字段,请保留默认值。

现已完成 AKS 群集、WebLogic 基础映像和 Java 企业版 应用程序的配置。

接下来,你将在 HTTPS(安全)端口上配置端到端 TLS/SSL 到 WebLogic Server 管理员istration 控制台和群集,并在 TLS/SSL 配置窗格中使用自己的证书。 对于此任务,请按照 AKS 用户指南上的 Oracle WebLogic Server 中的步骤操作,但在到达网络时返回到此页面,如以下屏幕截图所示。 你将使用下一部分来配置网络,然后返回到 AKS 上的 WLS 用户指南来完成部署。

Screenshot of Azure portal showing the Networking pane of the Create Oracle WebLogic Server on Azure Kubernetes Service page.

配置应用程序网关入口控制器

使用以下步骤在虚拟网络中配置应用程序网关入口控制器。

  1. 若要连接Azure 应用程序网关?,请选择“”。
  2. “配置虚拟网络”下,选择创建的虚拟网络。 此示例在 myVNetmyResourceGroup. 对于“子网”,请选择应用程序网关的子网。 本示例使用 myAppGatewaySubnet
  3. 对于 “选择所需的 TLS/SSL 证书”选项,请选择“ 生成自签名前端证书”。
  4. 对于为 管理员istration 控制台创建入口,请选择“是以公开 WebLogic 管理员istration 控制台。
  5. 对于其他字段,请保留默认值。

现在可以继续学习 WLS 部署的其他方面,如 AKS 用户指南上的 Oracle WebLogic Server 中所述

验证 WLS 的成功部署

本部分介绍如何快速验证 WLS 群集和 应用程序网关 入口控制器的成功部署。

部署完成后,选择“ 输出”。 你将找到 WebLogic 管理员istration 控制台和群集的外部 URL。 使用以下说明访问这些资源:

  • 若要查看 WebLogic 管理员istration 控制台,请先复制输出变量adminConsoleExternalUrl的值。 接下来,将该值粘贴到浏览器地址栏中,然后按 Enter 打开 WebLogic 管理员istration 控制台的登录页。
  • 若要查看 WebLogic 群集,请先复制输出变量 clusterExternalUrl的值。 接下来,使用此值通过将示例应用程序 URL 应用到以下模板来构造示例应用程序 URL: ${clusterExternalUrl}testwebapp/ 现在,将应用程序 URL 粘贴到浏览器地址栏中,然后按 Enter。 你将发现示例应用程序显示应用程序网关入口控制器路由到的 Pod 的专用地址和主机名。

清理资源

如果不打算继续使用 WLS 群集,请使用以下Azure 门户步骤删除虚拟网络和 WLS 群集:

  1. 访问资源组 myResourceGroup的概述页,然后选择“ 删除资源组”。
  2. 访问在 AKS 产品/服务上部署 WLS 的资源组的概述页,然后选择“ 删除资源组”。

后续步骤

继续探索用于运行 Azure 上的 WLS 的选项。