共用方式為


在 Azure Red Hat OpenShift 上部署 WebSphere Liberty 和 Open Liberty

本文說明如何使用 Azure 入口網站,在 Azure Red Hat OpenShift 上快速支援 IBM WebSphere Liberty 和 Open Liberty。

本文使用適用於 Open/WebSphere Liberty 的 Azure Marketplace 供應專案,加速您前往 Azure Red Hat OpenShift 的旅程。 供應專案會自動布建數個資源,包括具有內建 OpenShift Container Registry(OCR)、Liberty Operators 的 Azure Red Hat OpenShift 叢集,以及選擇性的容器映射,包括 Liberty 和您的應用程式。 若要查看供應項目,請瀏覽 Azure 入口網站。 如果您想要在 Azure Red Hat OpenShift 上執行 Liberty 的手動逐步指引,但未利用供應專案所啟用的自動化功能,請參閱 在 Azure Red Hat OpenShift 叢集上使用 Open Liberty/WebSphere Liberty 手動部署 Java 應用程式。

本文旨在協助您快速進行部署。 移至實際執行環境之前,您應該先探索微調 Liberty (英文)。

若您有興趣與開發 Azure 上 WebSphere 解決方案的工程團隊緊密合作以進行移轉,請填寫這份簡短的 WebSphere 移轉問卷,並附上您的連絡資訊。 專案經理、結構設計師和工程師組成的小組會立即連絡您,以展開緊密合作。

重要

雖然 ARO 是由 Red Hat 和 Microsoft 共同設計、操作和支援,以提供整合式支援體驗,但是您在 ARO 之上執行的軟體 (包括本文所述的軟體),均須遵循其各自的支援和授權條款。 如需 ARO 支援的詳細資訊,請參閱 Azure Red Hat OpenShift 4 的支援生命週期。 如需本文所述軟體支援的詳細資訊,請參閱本文所列軟體的主頁面。

注意

Azure Red Hat OpenShift 至少需要 40 個核心,才能建立和執行 OpenShift 叢集。 新 Azure 訂閱的預設 Azure 資源配額不符合這項需求。 若要要求增加您的資源限制,請參閱增加 VM 系列的 vCPU 配額 (部分機器翻譯) 中的要求增加不可調整的配額 (部分機器翻譯) 一節。 因為您需要要求增加的配額種類是「不可調整」,因此您必須提出支援票證。 要求增加不可調整的配額 (部分機器翻譯) 中的步驟會確切示範如何以正確的內容來提出票證。

免費試用訂用帳戶沒有資格增加配額。 請先升級至隨用隨付訂用帳戶,再要求增加配額。 如需詳細資訊,請參閱將您的 Azure 免費帳戶或 Azure 學生入門版帳戶升級 (部分機器翻譯)。

必要條件

取得 Red Hat 提取祕密

您要在本文中使用的 Azure Marketplace 供應項目需要 Red Hat 提取秘密。 本節會示範如何取得 Azure Red Hat OpenShift 的 Red Hat 提取秘密。 若要了解 Red Hat 提取秘密是什麼,以及為何需要該項,請參閱建立 Azure Red Hat OpenShift 4 叢集取得 Red Hat 提取密碼章節。 若要取得提取密碼以供使用,請遵循本節中的步驟。

造訪 Red Hat OpenShift Hybrid Cloud Console (英文),以使用您的 Red Hat 帳戶登入 OpenShift 叢集管理員入口網站。 您可能需要接受更多條款並更新您的帳戶,如下列螢幕擷取畫面所示。 使用您在建立帳戶時所使用的相同密碼。

螢幕擷取畫面顯示 Red Hat 更新您的帳戶頁面。

登入之後,請選取 [OpenShift],然後選取 [下載]。 選取 [所有類別] 下拉式清單,然後選取 [權杖]。 在 [提取秘密] 底下,選取 [複製] 或 [下載],如下列螢幕擷取畫面所示。

螢幕擷取畫面顯示 Red Hat 控制台入口網站,其中正在顯示提取秘密。

下列內容是從 Red Hat 控制台入口網站複製的範例,而 xxxx...xxx 將會取代驗證碼。

{"auths":{"cloud.openshift.com":{"auth":"xxxx...xxx","email":"contoso-user@contoso.com"},"quay.io":{"auth":"xxx...xxx","email":"contoso-user@test.com"},"registry.connect.redhat.com":{"auth":"xxxx...xxx","email":"contoso-user@contoso.com"},"registry.redhat.io":{"auth":"xxxx...xxx","email":"contoso-user@contoso.com"}}}

將祕密儲存至檔案,以供日後使用。

從 Azure 入口網站建立 Microsoft Entra 服務主體

您要在本文中使用的 Azure Marketplace 供應項目需要 Microsoft Entra 服務主體來部署 Azure Red Hat OpenShift 叢集。 供應項目會在部署期間指派具有適當權限的服務主體,而不需要進行角色指派。 若您有已準備就緒的服務主體,請略過本節並移至下一節,以了解如何部署供應項目。

使用下列步驟來部署服務主體,並從 Azure 入口網站取得其應用程式 (用戶端) 識別碼和秘密。 如需更多資訊,請參閱建立和使用服務主體以部署 Azure Red Hat OpenShift 叢集

注意

您必須擁有足夠的權限,才能使用 Microsoft Entra 租用戶註冊應用程式。 如果您遇到問題,請檢查必要的權限以確保您的帳戶可以建立身分識別。 如需詳細資訊,請參閱註冊 Microsoft Entra 應用程式並建立服務主體

  1. 透過 Azure 入口網站登入 Azure 帳戶。

  2. 選取 [Microsoft Entra ID]

  3. 選取 應用程式註冊

  4. 選取新增註冊

  5. 舉例來說,將應用程式命名為「liberty-on-aro-app」。 選取一個受支援的帳戶類型,以決定誰可以使用該應用程式。 設定值後,請選取 [註冊],如下列螢幕擷取畫面所示。 佈建應用程式需要幾秒鐘的時間。 等待部署完成,然後再繼續進行。

    螢幕擷取畫面顯示 Azure 入口網站,其中正在顯示註冊應用程式頁面。

  6. 從概觀頁面儲存應用程式 (用戶端) 識別碼,如下列螢幕擷取畫面所示。 將滑鼠指標暫留在 (螢幕擷取畫面中已修訂的) 值上方,然後選取出現的複製圖示。 工具提示會顯示 [複製到剪貼簿]。 請小心複製正確的值,因為該區段中的其他值也會有複製圖示。 將應用程式識別碼儲存至檔案,以供日後使用。

    螢幕擷取畫面顯示 Azure 入口網站,其中正在顯示服務主體用戶端識別碼。

  7. 依照下列步驟建立新的用戶端密碼:

    1. 選取 [憑證和秘密]
    2. 選取 [用戶端密碼],然後選取 [新用戶端密碼]
    3. 提供祕密的描述及持續時間。 完成後,選取 [新增]
    4. 新增用戶端密碼之後,就會顯示用戶端密碼的值。 請複製此值,因為您之後無法取得此值。

現在,您已獲得 Microsoft Entra 應用程式、服務主體和用戶端密碼。

在 Azure Red Hat OpenShift 上部署 IBM WebSphere Liberty 或 Open Liberty

本節中的步驟會引導您在 Azure Red Hat OpenShift 上部署 IBM WebSphere Liberty 或 Open Liberty。

下列步驟會示範如何尋找供應項目,並填寫 [基本] 窗格。

  1. 在 Azure 入口網站頂端的搜尋列中,輸入「Liberty」。 在 [Marketplace] 區段中的自動建議搜尋結果內,選取 [ARO 上的 IBM Liberty],如下列螢幕擷取畫面所示。

    Azure 入口網站的螢幕擷取畫面,其中顯示搜尋結果中的 Azure Red Hat OpenShift 上的 IBM WebSphere Liberty 和 Open Liberty。

    您也可使用此入口網站連結直接前往供應項目。

  2. 在供應項目頁面上,選取 [建立]

  3. 在 [基本] 窗格中,確保 [訂用帳戶] 欄位中顯示的值與先決條件區段中所列的角色相同。

  4. 供應項目必須在空白資源群組中部署。 在 [資源群組] 欄位中,選取 [建立新群組],然後填入資源群組的值。 因為資源群組在訂用帳戶內必須是唯一的,所以請挑選唯一的名稱。 擁有唯一名稱的簡單方式是使用您的姓名縮寫、今天日期與一些識別碼的組合。 例如,「abc1228rg」

  5. 在殼層中為資源群組名稱建立環境變數。

    export RESOURCE_GROUP_NAME=<your-resource-group-name>
    
  6. 在 [執行個體詳細資料] 下方,選取部署的區域。 如需有 OpenShift 運作的 Azure 區域清單,請參閱 Azure 上適用於 Red Hat OpenShift 4.x 的區域

  7. 選取區域之後,請選取 [下一步]

以下步驟將示範如何填寫下列螢幕擷取畫面所示的 [ARO] 窗格:

Azure 入口網站的螢幕擷取畫面,其中顯示 Azure Red Hat OpenShift 上的 IBM WebSphere Liberty 和 Open Liberty 的 [ARO] 窗格。

  1. 在 [建立新叢集] 底下,選取 [是]

  2. 在 [提供資訊以建立新叢集] 底下,針對 [Red Hat 提取祕密] 填入您在取得 Red Hat 提取祕密章節中所取得的 Red Hat 提取祕密。 針對 [確認祕密] 使用相同的值。

  3. 使用您在從 Azure 入口網站建立 Microsoft Entra 服務主體章節中取得的服務主體應用程式 (用戶端) 識別碼,填妥 [服務主體用戶端識別碼]

  4. 使用您在從 Azure 入口網站建立 Microsoft Entra 服務主體章節中取得的服務主體應用程式祕密,填妥 [服務主體用戶端密碼]。 針對 [確認秘密] 使用相同的值。

  5. 填妥值之後,選取 [下一步]

以下步驟將示範如何填寫下列螢幕擷取畫面所示的 [操作員和應用程式] 窗格,然後開始部署。

Azure 入口網站的螢幕擷取畫面,其中顯示 Azure Red Hat OpenShift 上的 IBM WebSphere Liberty 和 Open Liberty 的 [操作員和應用程式] 窗格。

  1. 在 [IBM 支援?] 底下,選取 [是]

    注意

    本快速入門會部署 IBM 支援的 WebSphere Liberty Operator,但您可以選取 [否] 來改為部署 Open Liberty Operator。

  2. 保留 [部署應用程式?] 的預設選項 [否]

    注意

    本快速入門稍後會手動部署範例應用程式,但如果您想要的話,也可以針對 [部署應用程式?] 選取 [是]

  3. 選取 [檢閱 + 建立]。 確保頂端顯示綠色的 [通過驗證] 訊息。 如果訊息未出現,請修正任何驗證問題,然後再次選取 [檢閱 + 建立]

  4. 選取 建立

  5. 在 [正在進行部署] 頁面上,追蹤部署的進度。

根據所選取區域中的網路狀況和其他活動,部署最多可能需要 40 分鐘的時間才能完成。

驗證部署的功能

本節中的步驟將示範如何驗證部署已成功完成。

如果您離開 [正在進行部署] 頁面,則下列步驟顯示如何返回該頁面。 如果您仍在顯示 [您的部署已完成] 的頁面上,您可以跳到第 5 步。

  1. 在任何入口網站頁面的角落,選取漢堡功能表,然後選取 [資源群組]

  2. 在包含 [篩選任何欄位] 文字的方塊中,輸入您先前建立資源群組的前幾個字元。 如果您遵循建議的慣例,請輸入您的縮寫,然後選取適當的資源群組。

  3. 在瀏覽窗格的 [設定] 區段中,選取 [部署]。 您會看到此資源群組的已排序部署清單,而且會先列出最新的部署。

  4. 捲動至此清單中的最舊項目。 此項目會對應至您已在上節中啟動的部署。 選取最舊部署,如下列螢幕擷取畫面所示。

    Azure 入口網站的螢幕擷取畫面,其中顯示 Azure Red Hat OpenShift 上的 IBM WebSphere Liberty 和 Open Liberty 部署,並醒目提示最舊的部署。

  5. 在瀏覽窗格中,選取 [輸出]。 此清單會顯示部署的輸出值,其中包含一些實用資訊。

  6. 開啟您的終端,然後貼上 [cmdToGetKubeadminCredentials] 欄位中的值。 您會看到用於登入 OpenShift 叢集控制台入口網站的系統管理員帳戶和認證。 下列內容是系統管理員帳戶的範例。

    az aro list-credentials --resource-group abc1228rg --name clusterf9e8b9
    {
      "kubeadminPassword": "xxxxx-xxxxx-xxxxx-xxxxx",
      "kubeadminUsername": "kubeadmin"
    }
    
  7. 將 [clusterConsoleUrl] 欄位中的值貼到已連上網際網路的網頁瀏覽器中,然後按下 Enter 鍵。 填入系統管理員的使用者名稱和密碼,然後登入。

  8. 驗證已安裝適用於 Liberty 的適當 Kubernetes 操作員。 在瀏覽窗格中,依序選取 [操作員] 和 [已安裝的操作員],如下列螢幕擷取畫面所示:

    螢幕擷取畫面顯示 Red Hat OpenShift 叢集控制台入口網站,其中正在顯示 [已安裝的操作員] 頁面。

    請記下您安裝的是 WebSphere Liberty 操作員還是 Open Liberty 操作員。 操作員變體會符合您在部署時選取的項目。 如果您選取 [IBM 支援],則會擁有 WebSphere Liberty 操作員。 否則,您會擁有 Open Liberty 操作員。 後續步驟中必須知道此資訊。

  9. 遵循安裝 OpenShift CLI 教學課程中的步驟下載並安裝 OpenShift CLI oc,然後返回本文件。

  10. 切換至 [輸出] 窗格,複製 [cmdToLoginWithKubeadmin] 欄位中的值,然後將值貼到您的終端內。 執行命令以登入 OpenShift 叢集的 API 伺服器。 您應該會在主控台中看到類似下列範例的輸出:

    Login successful.
    
    You have access to 71 projects, the list has been suppressed. You can list all projects with 'oc projects'
    
    Using project "default".
    

建立 Azure SQL Database

下述步驟會引導您建立 Azure SQL Database 單一資料庫,以搭配您的應用程式使用:

  1. 遵循快速入門:建立 Azure SQL Database 單一資料庫中的步驟在 Azure SQL Database 中建立單一資料庫,並請仔細注意下列附註所述的差異。 您可以將資料庫部署至與 OpenShift 叢集相同的資源群組。 建立和設定資料庫伺服器後,請返回此文。

    注意

    在 [基本資料] 步驟中,記下 [資源群組]、[資料庫名稱]、[<伺服器名稱>.database.windows.net]、[伺服器系統管理員登入] 和 [密碼] 的值。 本文稍後會將資料庫的「資源群組」稱為 <db-resource-group>

    在 [網路] 步驟中,將 [連線方法] 設定為 [公用端點],將 [允許 Azure 服務和資源存取此伺服器] 設定為 [是],以及將 [新增目前的用戶端 IP 位址] 設定為 [是]

    Azure 入口網站的螢幕擷取畫面,顯示 [建立 SQL Database] 頁面的 [網路] 索引標籤,其中已醒目提示 [連線方法] 和 [防火牆規則] 設定。

  2. 在殼層中為資料庫的資源群組名稱建立環境變數。

    export DB_RESOURCE_GROUP_NAME=<db-resource-group>
    

現在您已建立資料庫和 Azure Red Hat OpenShift 叢集,您可以準備 Azure Red Hat OpenShift 叢集來裝載 WebSphere Liberty 應用程式。

設定和部署應用程式範例

請依照本節的步驟,在 Liberty 執行階段上部署應用程式範例。 這些步驟會使用 Maven。

查看應用程式

使用下列命令複製本指南的範例程式碼。 此範例位於 GitHub 上。

git clone https://github.com/Azure-Samples/open-liberty-on-aro.git
cd open-liberty-on-aro
export BASE_DIR=$PWD
git checkout 20240920
cd 3-integration/connect-db/mssql

如果您看到處於「中斷連結的 HEAD」狀態的訊息,則可安全地略過此訊息。 這只表示您已簽出標記。

存放庫中有幾個範例。 我們使用「3-integration/connect-db/mssql/」。 以下為應用程式的檔案結構:

mssql
├─ src/main/
│  ├─ aro/
│  │  ├─ db-secret.yaml
│  │  ├─ openlibertyapplication.yaml
│  │  ├─ webspherelibertyapplication.yaml
│  ├─ docker/
│  │  ├─ Dockerfile
│  │  ├─ Dockerfile-ol
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ pom.xml

javaresourceswebapp 目錄包含應用程式範例的原始程式碼。 程式碼會宣告並使用名為 jdbc/JavaEECafeDB 的資料來源。

在「aro」目錄中,有三個部署檔案。 「db-secret.xml」可用來建立具有資料庫連線認證的 Kubernetes 秘密 (英文)。 本快速入門使用「webspherelibertyapplication.yaml」檔案來部署 WebSphere Liberty 應用程式。 如果您在在 Azure Red Hat OpenShift 上部署 IBM WebSphere Liberty 或 Open Liberty 一節中部署了 Open Liberty Operator,請使用「openlibertyapplication.yaml」檔案來部署 Open Liberty 應用程式。

docker 目錄中,有兩個檔案可透過 Open Liberty 或 WebSphere Liberty 建立應用程式映像。 這兩個檔案分別為「Dockerfile」和「Dockerfile-ol」。 在本快速入門中,請使用「Dockerfile」檔案,透過 WebSphere Liberty 建置應用程式映像。 同樣地,如果您在在 Azure Red Hat OpenShift 上部署 IBM WebSphere Liberty 或 Open Liberty 一節中部署了 Open Liberty Operator,則請使用「Dockerfile-ol」檔案,透過 Open Liberty 來建置應用程式映像。

在「liberty/config」目錄中,「server.xml」檔案可用來設定 Open Liberty 和 WebSphere Liberty 叢集的資料庫連線。

建置專案

現在您已收集必要的屬性,接下來可以使用下列命令來建置應用程式。 專案的 POM 檔案會從環境中讀取許多變數。 作為 Maven 組建的一部分,這些變數可用來在位於「src/main/aro」的 YAML 檔案中填入值。 您可以視需要在 Maven 外部,為應用程式執行類似動作。

cd ${BASE_DIR}/3-integration/connect-db/mssql

# The following variables are used for deployment file generation into target.
export DB_SERVER_NAME=<server-name>.database.windows.net
export DB_NAME=<database-name>
export DB_USER=<server-admin-login>@<server-name>
export DB_PASSWORD=<server-admin-password>

mvn clean install

(選擇性) 在本機測試您的專案

您現在可以使用下列步驟,先在本機執行和測試專案,再將專案部署至 Azure。 為方便起見,我們使用 liberty-maven-plugin。 若要深入了解 liberty-maven-plugin,請參閱使用 Maven 建置 Web 應用程式。 針對您的應用程式,您可以使用任何其他機制 (例如,您的本機 IDE) 來執行類似的作業。 您也可以考慮使用適用於容器開發的 liberty:devc 選項。 您可以在 Liberty 文件 (英文) 中,閱讀更多有關 liberty:devc 的內容。

  1. 使用 liberty:run 啟動應用程式,如下列範例所示。 liberty:run 也會使用上一節中定義的環境變數。

    cd ${BASE_DIR}/3-integration/connect-db/mssql
    mvn liberty:run
    
  2. 驗證應用程式如預期般運作。 如果成功,您應該會在命令輸出中看到類似 [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds. 的訊息。 在瀏覽器中移至 http://localhost:9080/https://localhost:9443/,並驗證應用程式可供存取,且所有函式正常運作。

  3. Ctrl+C 來停止。

接下來,使用下列步驟,透過 Docker 將專案容器化,並在本機中以容器的形式執行專案,然後再將專案部署至 Azure:

  1. 使用下列命令來建置映像:

    cd ${BASE_DIR}/3-integration/connect-db/mssql/target
    docker buildx build --platform linux/amd64 -t javaee-cafe:v1 --pull --file=Dockerfile .
    
  2. 使用下列命令來執行映像。 請注意,我們使用先前定義的環境變數。

    docker run -it --rm -p 9080:9080 -p 9443:9443 \
        -e DB_SERVER_NAME=${DB_SERVER_NAME} \
        -e DB_NAME=${DB_NAME} \
        -e DB_USER=${DB_USER} \
        -e DB_PASSWORD=${DB_PASSWORD} \
        javaee-cafe:v1
    
  3. 容器啟動後,在瀏覽器中移至 http://localhost:9080/https://localhost:9443/ 以存取應用程式。

  4. Ctrl+C 來停止。

建置映像並推送至映像串流

當您滿意應用程式的狀態時,請使用下列步驟,從遠端在叢集上建置映像。

  1. 使用下列命令來識別來源目錄和 Dockerfile:

    cd ${BASE_DIR}/3-integration/connect-db/mssql/target
    
    # If you are deploying the application with WebSphere Liberty Operator, the existing Dockerfile is ready for you
    
    # If you are deploying the application with Open Liberty Operator, uncomment and execute the following two commands to rename Dockerfile-ol to Dockerfile
    # mv Dockerfile Dockerfile.backup
    # mv Dockerfile-ol Dockerfile
    
  2. 使用下列命令來建立映像串流:

    oc create imagestream javaee-cafe
    
  3. 使用下列命令來建立組建設定,以指定組建輸出的映像串流標籤:

    oc new-build --name javaee-cafe-config --binary --strategy docker --to javaee-cafe:v1
    
  4. 使用下列命令來啟動組建,以上傳本機內容、將內容容器化,並輸出至之前指定的映像串流標籤:

    oc start-build javaee-cafe-config --from-dir . --follow
    

部署並測試應用程式

使用下列步驟來部署並測試應用程式:

  1. 使用下列命令來套用資料庫祕密:

    cd ${BASE_DIR}/3-integration/connect-db/mssql/target
    oc apply -f db-secret.yaml
    

    您應該會看到輸出 secret/db-secret-mssql created

  2. 使用下列命令來套用部署檔案:

    oc apply -f webspherelibertyapplication.yaml
    
  3. 使用下列命令來等候所有 Pod 啟動並成功執行:

    oc get pods -l app.kubernetes.io/name=javaee-cafe --watch
    

    您應該會看到類似下列範例的輸出,表示所有 Pod 皆在執行中:

    NAME                          READY   STATUS    RESTARTS   AGE
    javaee-cafe-67cdc95bc-2j2gr   1/1     Running   0          29s
    javaee-cafe-67cdc95bc-fgtt8   1/1     Running   0          29s
    javaee-cafe-67cdc95bc-h47qm   1/1     Running   0          29s
    
  4. 使用下列步驟來驗證結果:

    1. 使用下列命令來取得與應用程式一起部署之 Route 資源的「主機」

      echo "route host: https://$(oc get route javaee-cafe --template='{{ .spec.host }}')"
      
    2. 複製輸出中的 route host 值、在瀏覽器中加以開啟,然後測試應用程式。 如果網頁無法正確轉譯,這是因為應用程式仍在背景中啟動。 請等候幾分鐘,然後再次嘗試。

    3. 新增和刪除一些咖啡,以驗證應用程式和資料庫連線的功能。

      執行中應用程式的螢幕擷取畫面。

清除資源

若要避免 Azure 費用,您應該清除不必要的資源。 不再需要叢集時,請使用 az group delete 命令來移除資源群組、Azure Red Hat OpenShift 叢集、Azure SQL 資料庫 和所有相關資源。

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
az group delete --name $DB_RESOURCE_GROUP_NAME --yes --no-wait

下一步

如需如何在 Azure 上部署 IBM WebSphere 系列的詳細資訊,請參閱有哪些解決方案可在 Azure 上執行 WebSphere 系列的產品? (部分機器翻譯)