Azure Web App (二)使用部署槽切換部署環境程式碼
一,引言
前天我們將到使用Azure的 Pass 服務 「Web App」 去部署我們的.NET Core Web項目,也同時有介紹到如何在VS中配置登陸中國區的Azure帳號,今天接著講,我們部署完我們的Web服務,進行完測試後,肯定是要發布到生產環境,但是我們不可能再去創建一個相同的Web App,配置上生產環境的域名,配置上生產環境的資料庫連接字元串等等,而 Azure 的 Web App是可以通過自己的一個叫 「Deployment slots(部署槽)」的功能進行切換。我們來看一下微軟給出的使用部署槽的優點,以下是微軟的官方文檔提到的優勢
將應用程式部署到非生產槽具有以下優點:
- 可以在分階段部署槽中驗證應用更改,並將其與生產槽交換。
- 首先將應用部署到槽,然後將其交換到生產,這確保槽的所有實例都已準備好,然後交換到生產。 部署應用時,這樣可避免停機。 流量重定向是無縫的,且不會因交換操作而刪除任何請求。 當不需要預交換驗證時,可以通過配置自動交換來自動化這整個工作流。
- 交換後,具有以前分階段應用的槽現在具有以前的生產應用。 如果交換到生產槽的更改與預期不同,可以立即執行同一交換來收回「上一已知的良好站點」。
下面,我們正式開始今天的分享。
———-我是分割線———-
Azure Web App 部署系列:
二,正文
1,升級應用服務計劃
定價層為 「Free」 的Web App是無法使用 「Deployment slots」 的功能的,我們需要進行將定價層升級到 「Standard」 或者 「premium」
下圖中,我們可以看到 Web App 的 「Deployment slots(部署槽)」 都是有自己的主機名的實力應用,你的應用和環境配置可以在兩個部署槽位進行交換。

點擊 「Upgarte」,選擇 「Production」=>”S1″,可以看到 “Staging slots” 過渡槽這個功能

點擊 「Apply」,升級後,我們繼續跳轉到 「CnBateWeb」 的 Web App,左側菜單選擇 「Deployment」=>”Deployment slots”,目前只有一個默認槽位,並且狀態是 「Running」 的

點擊 「Add Slot」,


Name 輸入 「IntegrationTesting」,克隆設置選擇 「cnbateblogweb」,點擊 「Apply」

回到的我們的程式碼中,我們嘗試去修改 Index 頁面,在 Welcome 的後面追加 「IntegrationTesting」,我們可以把它理解成,我們的 web項目現在新增了一個功能,同時我們需要進行集成測試,測試通過後,需要發布到生產環境中去。
假如我們在本地開發完成後,也進行了簡單的測試,現在需要發布到雲端,需要QA的集成測試,我們選擇剛剛創建好的 「IntegrationTesting」的槽位。進行發布。

回到 Azure Portal 中,我們創建的 “CnBateBloaWeb” 的 Web App,點擊部署槽位剛剛創建的 「cnbateblogweb-IntegrationTesting」 的超鏈進行跳轉

選擇左側菜單 “Overview”,,點擊圖中用紅色方框圈起來的「Browse」,進行瀏覽,測試。

bingo,我們可以清楚的看到,”IntegrationTesting” 是我們剛剛為了集成測試,添加的一個標識,作為我們demo項目的 「假功能」
假如我們新發布的項目經過QA的集成測試通過後,我們需要將這一整套的程式碼發布到我們的生存環境中去,這個時候,我們還像上一篇將的那樣在VS中發布選擇之前創建的名字叫 「CnBateBlogWeb」 的 Web App? No,No,No,此時,我們已經將開發好的新功能的程式碼發布到新創建的 「cnbateblogweb-IntegrationTesting」 的部署槽里了,我們只需要將部署槽里的兩個槽位進行交換即可快速完成測試環境到生產環境的程式碼的切換,接下來,我們進行交換 測試/生產 環境的部署槽。
回到 「Deployment Slot」 頁面,點擊 「Sswap」 進行交互。

源 選擇我們集成環境的 「cnbateblogweb-IntegrationTesting」,目標 選擇 「cnbateblogweb」,點擊 「Swap」.
在 Azure Portal 上這個過程需要等待差不多20多秒,但是其實,它們兩個槽位以及進行了無停機的交換了,我們進行拿著生產環境的域名進行訪問,可以看到,我們成功的將剛剛加的新功能發布到生產環境上了。

bingo,我們進行的分析到此也就完了。
三,總結
今天我們演示了一下,如何在Web App中創建 「Deployment Slot」進行快速無停機部署新功能程式碼,也使用VS進行發布到創建的Web App中創建的新的部署槽位中,同時也引出了另外一個問題,環境變數怎麼切換,切換槽位後,生產環境的資料庫連接字元串怎麼辦。下一篇文章,我會繼續 部署槽,進行配置部署槽設置,同時在交換槽位的時候,測試環境/生產環境都能夠準確的連接到對於的資料庫
程式碼繼續暫時不上傳了,因為沒有設計到其他設置,只是簡單的修改了主頁,下一篇講解 配置槽設置 的時候再上傳程式碼
作者:Allen
版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。
作者:Allen 版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。