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

本教程介绍如何在 Azure Kubernetes 服务 (AKS) 产品/服务上部署 Oracle WebLogic Server (WLS),该服务与订阅中预先存在的虚拟网络集成。

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

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

先决条件

  • Azure 订阅。 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户
  • 准备一台安装了类似于 Unix 的操作系统(例如 Ubuntu、macOS 或适用于 Linux 的 Windows 子系统)的本地计算机。
  • 安装 Azure CLI 2.73.0 或更高版本以运行 Azure CLI 命令。
  • AKS 上的 WLS 市场产品/服务需要权限才能创建用户分配的托管标识,并分配 Azure 角色。 若要分配 Azure 角色,必须拥有 Microsoft.Authorization/roleAssignments/write 权限,例如用户访问管理员所有者
  • Oracle 帐户。 Oracle 容器注册表中的步骤指示你接受 WebLogic Server 映像的许可协议。 记下 Oracle 帐户的密码和电子邮件。

创建资源组

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

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

创建自定义虚拟网络

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

本节中的示例创建了一个地址空间为 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 \
    --___location ${LOCATION}

接下来,使用 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 为应用程序网关创建另一个子网。 以下示例创建名为 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 群集。

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

在存储帐户中存储 Jakarta EE 应用程序

可以在 AKS 产品/服务部署上部署 Jakarta EE 应用程序以及 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 ${LOCATION} \
    --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 命令将 Jakarta EE 应用程序上传到 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 窗格时返回到此页面,如以下屏幕截图所示。

Azure 门户的屏幕截图,显示了在 Azure Kubernetes 服务上创建 Oracle WebLogic Server 页面的“配置 AKS 群集”窗格。

配置 AKS 群集

现在你在虚拟网络中有了一个 AKS 群集,请选择用于部署的 AKS 群集。

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

现已配置 AKS 群集、WebLogic 基础映像和 Jakarta EE 应用程序。

接下来,配置负载均衡。 对于此任务,请继续按照 AKS 用户指南上的 Oracle WebLogic Server 中的步骤作,但在到达 负载均衡时返回到此页面,如以下屏幕截图所示。 使用下一部分配置负载均衡,然后返回到 AKS 用户指南上的 WLS 以完成部署。

Azure 门户的屏幕截图,显示了在 Azure Kubernetes 服务上创建 Oracle WebLogic Server 页的“网络”窗格。

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

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

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

现在,你可以按照 AKS 上的 Oracle WebLogic Server 用户指南中所述,继续进行 WLS 部署的其他方面。

验证 WLS 成功部署

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

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

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

清理资源

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

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

后续步骤

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