教程:将 Oracle WebLogic Server 迁移到自定义虚拟网络中的Azure Kubernetes 服务 (AKS)
本教程介绍如何在与使用者订阅中的自定义虚拟网络集成的 Azure Kubernetes 服务 (AKS) 产品/服务上部署 Oracle WebLogic Server (WLS)。 使用 AKS 上的 WLS 产品/服务,你可以决定是创建新的虚拟网络还是使用现有的虚拟网络。
本教程介绍如何执行下列操作:
- 创建自定义虚拟网络,并在网络中创建基础结构。
- 在自定义虚拟网络中的 AKS 上运行 Oracle WebLogic Server。
- 将具有 Azure 应用程序网关的 Oracle WebLogic Server 公开为负载均衡器。
- 验证成功部署。
先决条件
- Azure 订阅。 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户。
- 准备一台安装了类似于 Unix 的操作系统(例如 Ubuntu、macOS 或适用于 Linux 的 Windows 子系统)的本地计算机。
- 安装 Azure CLI 2.37.0 或更高版本,以运行 Azure CLI 命令。
- 通过使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录到 Azure。
- 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用和管理 Azure CLI 的扩展。
- 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
- AKS 上的 WLS 市场产品/服务需要权限才能创建用户分配的托管标识,并分配 Azure 角色。 若要分配 Azure 角色,必须拥有
Microsoft.Authorization/roleAssignments/write
权限,例如用户访问管理员或所有者。 - Oracle 帐户。 Oracle 容器注册表中的步骤将指导你接受 WebLogic Server 映像的许可协议。 记下 Oracle 帐户的密码和电子邮件。
创建资源组
使用 az group create 创建资源组。 此示例在 myResourceGroup
位置创建一个名为 eastus
的资源组:
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 为应用程序网关创建子网。 以下示例创建名为 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 EE 应用程序存储在存储帐户中
可以在 AKS 产品/服务部署上部署 Java 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 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 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 群集时返回到此页面,如以下屏幕截图所示。
配置 AKS 群集
现在你在虚拟网络中有了一个 AKS 群集,请选择用于部署的 AKS 群集。
- 对于创建新的 AKS 群集?,请选择否。
- 在选择 AKS 群集下,打开下拉菜单,然后选择创建的 AKS 群集,在本示例中名为
myAKSCluster
。 - 若要使用 Oracle 容器注册表中预先存在的 WebLogic Server Docker 映像?,请选择是。
- 对于创建新的 Azure 容器注册表来存储应用程序映像?,请选择是。
- 在 Oracle 单一登录身份验证的用户名下,输入 Oracle 单一登录帐户用户名。
- 在 Oracle 单一登录身份验证的密码下,输入该帐户的密码。
- 在确认密码下,重新输入上述字段的值。
- 对于选择所需的 WebLogic Server、JDK 和 Operator System 的组合或完全限定的 Docker 标记,请保留默认值。
- 对于部署应用程序包,请选择是。
- 对于应用程序包(.war、.ear、.jar),请选择浏览。
- 选择创建的存储帐户。 在本例中,名称以
stgwlsaks
开头。 - 在容器页中选择容器。 本示例使用
mycontainer
。 - 检查容器中列出的应用程序。 此示例使用 testwebapp.war。
- 选择“选择” 。
- 选择创建的存储帐户。 在本例中,名称以
- 对于其他字段,保留默认值。
现在,你已经完成了对 AKS 群集、WebLogic 基础映像和 Java EE 应用程序的配置。
接下来,你将在 HTTPS(安全)端口上配置 WebLogic Server 管理控制台和群集的端到端 TLS/SSL,并在 TLS/SSL 配置窗格中使用你自己的证书。 对于此任务,请按照 AKS 上的 Oracle WebLogic Server 用户指南中的步骤进行操作,但在到达网络时返回到此页面,如以下屏幕截图所示。 你将使用下一节来配置网络,然后返回到 AKS 上的 WLS 用户指南来完成部署。
配置应用程序网关入口控制器
使用以下步骤在虚拟网络中配置应用程序网关入口控制器。
- 对于连接到 Azure 应用程序网关?,选择是。
- 在配置虚拟网络下,对于虚拟网络,选择创建的虚拟网络。 此示例在
myVNet
中使用myResourceGroup
。 对于子网,请选择应用程序网关的子网。 本示例使用myAppGatewaySubnet
。 - 对于选择所需的 TLS/SSL 证书选项,请选择生成自签名前端证书。
- 对于为管理控制台创建入口,请选择是以公开 WebLogic 管理控制台。
- 对于其他字段,保持默认值。
现在,你可以按照 AKS 上的 Oracle WebLogic Server 用户指南中所述,继续进行 WLS 部署的其他方面。
验证 WLS 成功部署
本节介绍如何快速验证 WLS 群集和应用程序网关入口控制器的成功部署。
部署完成时,选择输出。 你将找到 WebLogic 管理控制台和群集的外部 URL。 使用以下说明访问这些资源:
- 若要查看 WebLogic 管理控制台,请首先复制输出变量
adminConsoleExternalUrl
的值。 接下来,将该值粘贴到浏览器地址栏中,然后按 Enter 打开 WebLogic 管理控制台的登录页面。 - 若要查看 WebLogic 群集,请首先复制输出变量
clusterExternalUrl
的值。 接下来,使用此值通过将其应用于以下模板来构造示例应用程序 URL:${clusterExternalUrl}testwebapp/
。 现在,将应用程序 URL 粘贴到浏览器地址栏中,然后按 Enter。 你将发现示例应用程序显示应用程序网关入口控制器路由到的 Pod 的专用地址和主机名。
清理资源
如果你不打算继续使用 WLS 群集,请按照以下 Azure 门户步骤删除虚拟网络和 WLS 群集:
- 访问资源组
myResourceGroup
的概述页面,然后选择删除资源组。 - 访问你在 AKS 上的 WLS 产品/服务上部署的资源组的概述页面,然后选择删除资源组。
后续步骤
继续探索用于运行 Azure 上的 WLS 的选项。