教程:将 Oracle WebLogic Server 迁移到自定义虚拟网络中的Azure Kubernetes 服务
本教程介绍如何在与使用者订阅中的自定义虚拟网络集成的 Azure Kubernetes 服务 (AKS) 产品/服务上部署 Oracle WebLogic Server (WLS)。 AKS 产品/服务上的 WLS 允许你决定是否创建新的虚拟网络或使用现有虚拟网络。
本教程介绍如何执行下列操作:
- 创建自定义虚拟网络并在网络中创建基础结构。
- 在自定义虚拟网络中的 AKS 上运行 Oracle WebLogic Server。
- 使用 Azure 应用程序网关 公开 Oracle WebLogic Server 作为负载均衡器。
- 验证成功的部署。
先决条件
使用 Bash 环境使用 Azure Cloud Shell ;请确保 Azure CLI 版本为 2.37.0 或更高版本。
如果需要, 请安装 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
创建自定义虚拟网络
创建自定义虚拟网络时存在约束。 在环境中创建虚拟网络之前,请阅读以下文章:
- Azure Kubernetes 服务(AKS)中应用程序的网络概念。
- 应用程序网关基础结构配置。
本部分中的示例创建具有地址空间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 群集”时返回到此页面,如以下屏幕截图所示。
配置 AKS 群集
在虚拟网络中拥有 AKS 群集后,请选择部署的 AKS 群集。
- 对于 “创建新的 AKS 群集?”,请选择“ 否”。
- 在“选择 AKS 群集”下,打开下拉菜单,然后选择创建的 AKS 群集,在本示例中命名
myAKSCluster
。 - 若要使用 Oracle 容器注册表中预先存在的 WebLogic Server Docker 映像,请选择“是”。
- 若要创建新的Azure 容器注册表来存储应用程序映像?,请选择“是”。
- 在 Oracle 单一登录身份验证的“用户名”下,输入 Oracle 单一登录帐户用户名。
- 在 Oracle 单一登录身份验证的密码下,输入该帐户的密码。
- 在“确认密码”下,重新输入上述字段的值。
- 对于 WebLogic Server、JDK 和操作员系统或完全限定的 Docker 标记的所需组合,请保留默认值。
- 对于 “部署应用程序包”,请选择“ 是”。
- 对于 应用程序包(.war、.ear、.jar),请选择“ 浏览”。
- 选择创建的存储帐户。
stgwlsaks
名称以此示例开头。 - 在“容器”页中选择容器。 本示例使用
mycontainer
。 - 检查容器中列出的应用程序。 此示例使用 testwebapp.war。
- 选择“选择”。
- 选择创建的存储帐户。
- 对于其他字段,请保留默认值。
现已完成 AKS 群集、WebLogic 基础映像和 Java 企业版 应用程序的配置。
接下来,你将在 HTTPS(安全)端口上配置端到端 TLS/SSL 到 WebLogic Server 管理员istration 控制台和群集,并在 TLS/SSL 配置窗格中使用自己的证书。 对于此任务,请按照 AKS 用户指南上的 Oracle WebLogic Server 中的步骤操作,但在到达网络时返回到此页面,如以下屏幕截图所示。 你将使用下一部分来配置网络,然后返回到 AKS 上的 WLS 用户指南来完成部署。
配置应用程序网关入口控制器
使用以下步骤在虚拟网络中配置应用程序网关入口控制器。
- 若要连接Azure 应用程序网关?,请选择“是”。
- 在“配置虚拟网络”下,选择创建的虚拟网络。 此示例在
myVNet
myResourceGroup
. 对于“子网”,请选择应用程序网关的子网。 本示例使用myAppGatewaySubnet
。 - 对于 “选择所需的 TLS/SSL 证书”选项,请选择“ 生成自签名前端证书”。
- 对于为 管理员istration 控制台创建入口,请选择“是”以公开 WebLogic 管理员istration 控制台。
- 对于其他字段,请保留默认值。
现在可以继续学习 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 群集:
- 访问资源组
myResourceGroup
的概述页,然后选择“ 删除资源组”。 - 访问在 AKS 产品/服务上部署 WLS 的资源组的概述页,然后选择“ 删除资源组”。
后续步骤
继续探索用于运行 Azure 上的 WLS 的选项。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈