在 Azure Spring Apps 中設定預備環境
注意
基本、標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告。
標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps。
本文適用於:✅ Java ❎ C#
本文適用於: ❎基本 ✅ 標準 ✅ 企業
本文說明如何在 Azure Spring Apps 中使用藍綠部署模式來設定暫存部署。 藍綠部署是 Azure DevOps 持續傳遞模式,此模式仰賴在部署新版本 (綠色) 時,仍讓現有版本 (藍色) 持續運作的方式。 本文也會示範如何在不變更生產環境部署的情況下,將預備部署置於生產環境中。
必要條件
- 標準方案上現有的 Azure Spring 應用程式執行個體。
- Azure CLI。
本文使用從 Spring Initializr 建置的應用程式。 如果您想要針對此範例使用不同的應用程式,則必須在應用程式的公開部分進行變更,以區分預備部署與實際執行環境。
提示
Azure Cloud Shell 是免費的互動式殼層,可讓您用來執行本文中的步驟。 它具有已預先安裝的常用 Azure 工具,包括 Git、JDK、Maven 和 Azure CLI 的最新版本。 如果您已登入 Azure 訂閱,請啟動您的 Cloud Shell 執行個體。 若要深入了解,請參閱 Azure Cloud Shell 概觀。
若要在 Azure Spring Apps 中設定藍綠部署,請遵循下一節中的指示。
安裝 Azure CLI 延伸模組
使用下列命令安裝適用於 Azure CLI 的 Azure Spring 應用程式延伸模組 (部分機器翻譯):
az extension add --name spring
準備應用程式和部署
若要建置應用程式,請遵循下列步驟:
使用 Spring Initializr 搭配此設定來產生範例應用程式的程式碼。
下載程式碼。
將下列 HelloController.java 來源檔案新增至資料夾 *\src\main\java\com\example\hellospring*:
package com.example.hellospring; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class HelloController { @RequestMapping("/") public String index() { return "Greetings from Azure Spring Apps!"; } }
建置 .jar 檔案:
mvn clean package -DskipTests
在 Azure Spring Apps 執行個體中建立應用程式:
az spring app create \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name demo \ --runtime-version Java_17 \ --assign-endpoint
將應用程式部署至 Azure Spring Apps:
az spring app deploy \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name demo \ --artifact-path target\hellospring-0.0.1-SNAPSHOT.jar
修改預備部署的程式碼:
package com.example.hellospring; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class HelloController { @RequestMapping("/") public String index() { return "Greetings from Azure Spring Apps! THIS IS THE GREEN DEPLOYMENT"; } }
重新建置 .jar 檔案:
mvn clean package -DskipTests
建立綠色部署:
az spring app deployment create \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --app demo \ --name green \ --runtime-version Java_17 \ --artifact-path target\hellospring-0.0.1-SNAPSHOT.jar
檢視應用程式和部署
可使用下列步驟以檢視部署的應用程式。
在 Azure 入口網站中,移至您的 Azure Spring Apps 執行個體。
從瀏覽窗格開啟 [應用程式] 窗格,以檢視服務執行個體的應用程式。
選取應用程式以檢視其詳細資料。
開啟 [部署] 以查看應用程式的所有部署。 此方格會顯示生產與預備部署。
選取 URL 以開啟目前部署的應用程式。
在 [狀態] 資料行中選取 [生產] 以查看預設應用程式。
在 [狀態] 資料行中選取 [預備] 以查看預備應用程式。
提示
確認您的測試端點以斜線 (/) 結尾,以確保 CSS 檔案已正確載入。 如果您的瀏覽器需要您輸入登入認證來查看頁面,請使用 URL decode \(英文\) 來將您的測試端點解碼。 URL 解碼會以 https://\<username>:\<password>@\<cluster-name>.test.azuremicroservices.io/demo/green
格式傳回 URL。 請使用這個格式來存取您的端點。 如果您要停用測試端點的基本驗證,請執行下列 Azure CLI 命令:az spring app update --resource-group <resource-group-name> --service <Azure-Spring-Apps-instance-name> --name demo --disable-test-endpoint-auth true
注意
設定伺服器的設定適用於預備環境和生產環境。 例如,如果您將設定伺服器中應用程式示範的內容路徑 (server.servlet.context-path) 設定為 somepath,則您的綠色部署路徑就會變更為 https://\<username>:\<password>@\<cluster-name>.test.azuremicroservices.io/demo/green/somepath/...
。
如果您在此時造訪您對外公開的應用程式示範,您應該會看到沒有新變更的舊頁面。
將綠色部署設定為生產環境
在預備環境中確認變更之後,您便可以將它推送到生產環境。 在 [應用程式]> [部署] 頁面上,選取目前在生產環境中的應用程式。
選取綠色部署 [註冊狀態] 之後的刪節號,然後選取 [設定為生產環境]。
確認應用程式的 URL 會顯示您的變更。
注意
在將綠色部署設定為生產環境之後,先前的部署將會變成預備部署。
修改預備部署
如果您對變更不滿意,則可以修改應用程式的程式碼、建置新的 .jar 套件,然後使用 Azure CLI 將它上傳到您的綠色部署:
az spring app deploy \
--resource-group <resource-group-name> \
--service <service-instance-name> \
--name demo \
--deployment green \
--artifact-path demo.jar
刪除預備環境部署
若要從 Azure 入口網站中刪除預備部署,請移至預備部署的頁面,然後選取 [刪除] 按鈕。
或者,執行下列命令從 Azure CLI 刪除您的預備部署:
az spring app deployment delete \
--resource-group <resource-group-name> \
--service <service-instance-name> \
--name <staging-deployment-name> \
--app demo