一,引言
前天我們將到使用Azure的 Pass 服務 “Web App” 去部署我們的.NET Core Web專案,也同時有介紹到如何在VS中配置登陸中國區的Azure賬號,今天接著講,我們部署完我們的Web服務,進行完測試後,肯定是要釋出到生產環境,但是我們不可能再去建立一個相同的Web App,配置上生產環境的域名,配置上生產環境的資料庫連線字串等等,而 Azure 的 Web App是可以通過自己的一個叫 “Deployment slots(部署槽)”的功能進行切換。我們來看一下微軟給出的使用部署槽的優點,以下是微軟的官方文件提到的優勢
將應用程式部署到非生產槽具有以下優點:
- 可以在分階段部署槽中驗證應用更改,並將其與生產槽交換。
- 首先將應用部署到槽,然後將其交換到生產,這確保槽的所有例項都已準備好,然後交換到生產。 部署應用時,這樣可避免停機。 流量重定向是無縫的,且不會因交換操作而刪除任何請求。 當不需要預交換驗證時,可以通過配置自動交換來自動化這整個工作流。
- 交換後,具有以前分階段應用的槽現在具有以前的生產應用。 如果交換到生產槽的更改與預期不同,可以立即執行同一交換來收回“上一已知的良好站點”。
下面,我們正式開始今天的分享。
----------我是分割線----------
Azure Web App 部署系列:
1,Azure Web App(一)釋出你的Net Core Web 專案
二,正文
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
版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。