前言
原文
Manually swapping deployment slots
你可以依從以下步驟來進行 swap
- 在 Azure Portal 點選你的 app
- 打開 “Deployment slots” 然後點擊”Swap”
- 在對話框中選擇 Source slot 和 Target slot
在通常情況下 Source slot 會是你的 production slot - 選擇 “Source Changes” 和 “Target Changes” 來查看你的設置有沒有問題
- 你可以點擊 “Swap” 來馬上執行 swap
或是你可以點擊 “Swap with preview” 來查看你的 target slot 會變成怎樣 - 當你執行了 Swap 之後,你可以點擊 “Close” 來關掉對話框
Swap with preview (multi-phase swap)
若你使用了 “Swap with preview”
那你可以在把變更應用到 production slot 前查看和驗證變更
若你在過程中取消了 swap
App Service 會把之前的 configuration 重新應用到 source slot
Rollback 到 swap 之前的狀態
在上面的第5步點選了 “Swap with preview” 後
即可開始這個 multi-phase swap
整個過程分為兩個 phase
在 phase 1
你可以在對話框中查看 source slot 有什麼 configuration 變更
而在 phase 1 結束後
Source slot 已經應用了 target slot 的 configuration
你可以通過以下的 URL 接入你的 source slot 來檢查有沒有問題https://<app_name>-<source-slot-name>.azurewebsites.net
如果你發現有任何問題的話
你可以在 “Swap action” 中點擊 “Cancel Swap”
來 rollback source slot 到 swap 之前的狀態
在你確認變更後的 source slot 可以被 swap 到 target slot 後
你可以在 “Swap action” 中點擊 “Complete Swap” 來把 source slot swap 到 target slot
在 swap 完成後
請點擊 “Close” 來關閉對話框
Configure auto swap
除了手動觸發 swap
你也可以設置 auto swap
在設置了 auto swap 後
每當你的 deployment slot 有 code change
App Service 就會自動觸發 swap
要注意的是
目前 auto swap 還不支援 web apps on Linux 和 Web App for Containers
你可以以下列步驟來啟用 auto swap
- 在 Azure Portal 點選你想要 auto swap 的 deployment slot
並打開 “Configuration” > “General settings” - 把 “Auto swap enabled” 設置為 “On”
- 在 “Auto swap deployment slot” 選擇 target slot
- 點擊 “Save”
Specify custom warm-up
如果你需要 custom warm-up 的話
你可以在 web.config
設置 applicationInitialization
Azure 會等待 custom warm-up 完成才進行 swap
下面是一個 web.config
的例子
<system.webServer> <applicationInitialization> <add initializationPage="/" hostName="[app hostname]" /> <add initializationPage="/Home/About" hostName="[app hostname]" /> </applicationInitialization> </system.webServer>
如果你想知道可以怎樣設置 applicationInitialization
請查看 Most common deployment slot swap failures and how to fix them。
除了 web.config
你也可以在 app setting 內有三個設置都是跟 warm-up 相關的
WEBSITE_SWAP_WARMUP_PING_PATH
- 用作在 swap 之後 warm-up 你的 app 的路徑
- 以
/
開首的字串,例如/statuscheck
- 預設為
/
WEBSITE_SWAP_WARMUP_PING_STATUSES
- 在接收來自
WEBSITE_SWAP_WARMUP_PING_PATH
的 response 時
那些 HTTP response code 可被視為成功 warm-up - 以逗號分隔的 HTTP code,例如
200,202
在這個例子中,如果WEBSITE_SWAP_WARMUP_PING_PATH
傳回 200 和 200 以外的 status code 都會被視為 warm-up 失敗 - 預設為任何 HTTP code 都會被視為 warm-up 成功
- 在接收來自
WEBSITE_WARMUP_PATH
- 用作在 restart (不只是 swap) 後用來 warm-up 你的 app 的路徑
- 以
/
開首的字串,例如/statuscheck
- 預設為
/
Roll back and monitor a swap
如果是在 swap 完成後才發現有問題發生
請馬上再 swap 一次以 rollback
如果 swap 耗時很久都仍沒有完成
請查看 “Activity log” 以取得更多資訊
- 在 Azure portal 打開你的 app
- 選擇 “Activity log“
- Swap 的相關記錄在 log query 中會被顯示為
Swap Web App Slots
你可以展開它並選擇其中的 operation 或 error 以取得更多資訊
Reference
https://learn.microsoft.com/en-us/azure/app-service/reference-app-settings?tabs=kudu%2Cdotnet
發佈留言