教程:将 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 创建资源组。 此示例在 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 为应用程序网关创建子网。 以下示例创建名为 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 应用程序网关?,选择是。
- 在配置虚拟网络下,对于虚拟网络,选择创建的虚拟网络。 此示例在
myResourceGroup
中使用myVNet
。 对于子网,请选择应用程序网关的子网。 本示例使用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 的选项。