教學課程:將 Oracle WebLogic Server 遷移至自定義虛擬網路內的 Azure Kubernetes Service (AKS)
本教學課程說明如何在 Azure Kubernetes Service (AKS) 供應專案上部署 Oracle WebLogic Server (WLS),該供應專案會與取用者訂用帳戶中的自定義虛擬網路整合。 AKS 供應專案的 WLS 可讓您決定是否要建立新的虛擬網路或使用現有的虛擬網路。
在本教學課程中,您會了解如何:
- 建立自定義虛擬網路,並在網路內建立基礎結構。
- 在自定義虛擬網路中的 AKS 上執行 Oracle WebLogic Server。
- 使用 Azure 應用程式閘道 公開 Oracle WebLogic Server 作為負載平衡器。
- 驗證成功的部署。
必要條件
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
- 使用已安裝類似 Unix 的作業系統 (例如 Ubuntu、macOS 或 Windows 子系統 Linux 版) 準備本機電腦。
- 安裝 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 Container Registry 中的步驟會引導您接受 WebLogic Server 映射的許可協定。 記下您的 Oracle 帳戶密碼和電子郵件。
建立資源群組
使用 az group create 來建立資源群組。 此範例會在位置中eastus
建立名為 myResourceGroup
的資源群組:
export RESOURCE_GROUP_NAME="myResourceGroup"
az group create \
--name ${RESOURCE_GROUP_NAME} \
--location eastus
建立自定義虛擬網路
建立自定義虛擬網路時有條件約束。 在環境中建立虛擬網路之前,請閱讀下列文章:
- Azure Kubernetes Service (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 子網資源識別碼,並將其儲存在變數中,以供本文稍後使用:
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 應用程式儲存在記憶體帳戶中
您可以部署 Java EE 應用程式以及 AKS 供應專案部署上的 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
。 - 針對 [使用預先存在的 WebLogic Server Docker 映射從 Oracle Container Registry?],選取 [ 是]。
- 針對 [建立新的 Azure Container Registry 以儲存應用程式映射?],選取 [ 是]。
- 在 [ Oracle 單一登錄驗證的用戶名稱] 下,輸入您的 Oracle 單一登錄帳戶用戶名稱。
- 在 [Oracle 單一登錄驗證的密碼] 下,輸入該帳戶的密碼。
- 在 [確認密碼] 下,重新輸入前一個字段的值。
- 針對 [ 選取所需的 WebLogic Server、JDK 和操作員系統或完整 Docker 標籤的組合],保留預設值。
- 針對 [ 部署您的應用程式套件],選取 [ 是]。
- 針對 [應用程式套件] [.war,.ear,.jar],選取 [ 瀏覽]。
- 選取建立的儲存體帳戶。 這個範例中的名稱開頭
stgwlsaks
為 。 - 在 [容器] 頁面中選取您的容器。 這個範例會使用
mycontainer
。 - 檢查容器中所列的應用程式。 此範例使用 testwebapp.war。
- 選取選取。
- 選取建立的儲存體帳戶。 這個範例中的名稱開頭
- 針對其他欄位,保留預設值。
您現在已完成設定 AKS 叢集、WebLogic 基底映像和 Java EE 應用程式。
接下來,您會在 [TLS/SSL 組態] 窗格中,使用您自己的憑證,在 HTTPS (安全) 埠上設定端對端 TLS/SSL 至 WebLogic Server 管理控制台和叢集。 針對這項工作,請遵循 AKS 使用者指南上的 Oracle WebLogic Server 中的步驟,但在您連線到網路時返回此頁面,如下列螢幕快照所示。 您將使用下一節來設定網路功能,然後返回 AKS 上的 WLS 使用者指南來完成部署。
設定 應用程式閘道 輸入控制器
使用下列步驟來設定虛擬網路內的 應用程式閘道 輸入控制器。
- 針對 [連線到 Azure 應用程式閘道?],選取 [是]。
- 在 [設定虛擬網络] 底下,針對 [虛擬網络],選取您建立的虛擬網络。 這個範例
myVNet
會在 中使用myResourceGroup
。 針對 [子網],選取 應用程式閘道 的子網。 這個範例會使用myAppGatewaySubnet
。 - 針對 [ 選取所需的 TLS/SSL 憑證] 選項,選取 [ 產生自我簽署的前端憑證]。
- 針對 [ 為管理控制台建立輸入],選取 [ 是 ] 以公開 WebLogic 管理控制台。
- 針對其他欄位,保留預設值。
您現在可以繼續進行 WLS 部署的其他層面,如 AKS 上的 Oracle WebLogic Server 使用者指南中所述。
驗證 WLS 的成功部署
本節說明如何快速驗證 WLS 叢集的成功部署,以及 應用程式閘道 輸入控制器。
部署完成之後,選取 [ 輸出]。 您會發現 WebLogic 管理主控台和叢集的外部 URL。 使用下列指示來存取這些資源:
- 若要檢視 WebLogic 管理主控台,請先複製輸出變數
adminConsoleExternalUrl
的值。 接下來,將值貼到瀏覽器網址列中,然後按 Enter 以開啟 WebLogic 管理控制台的登入頁面。 - 若要檢視 WebLogic 叢集,請先複製輸出變數
clusterExternalUrl
的值。 接下來,使用此值來建構範例應用程式 URL,方法是將它套用至下列範本:${clusterExternalUrl}testwebapp/
。 現在,將應用程式 URL 貼到瀏覽器網址列中,然後按 Enter。 您會發現範例應用程式會顯示 應用程式閘道 輸入控制器所路由傳送的 Pod 私人位址和主機名。
清除資源
如果您不打算繼續使用 WLS 叢集,請使用下列 Azure 入口網站 步驟刪除虛擬網路和 WLS 叢集:
- 瀏覽資源群組
myResourceGroup
的概觀頁面,然後選取 [ 刪除資源群組]。 - 請流覽您在 AKS 供應專案上部署 WLS 的資源群組概觀頁面,然後選取 [ 刪除資源群組]。
下一步
繼續探索在 Azure 上執行 WLS 的選項。