前言

這篇我們將談談 Azure App Service 持續與階段性佈署。在撰寫這篇文章之前,其實完全不知道 Azure App Service 有插槽 (Slot) 功能,能將 App 佈署至插槽上,製作階段性佈署的環境。軟體產品通常會有幾個階段性的環境,包含開發環境 (develop)、測試環境 (QA)、驗收環境 (UAT 或 Staging) 與正式環境 (Production),隨著開發團隊文化而有些差異。另一個有趣的特色是,插槽之間可以進行交換。只需要驗證並設定好環境配置,可達到事先暖機效果,達到零停機時間的效果 (zero downtime)。
本篇文章將簡單介紹階段性部署與持續部署,若有錯誤或任何建議,請各位先進不吝提出,謝謝。


介紹

階段性部署
當開始部署您的 Web App, Mobile back end, 與 API app 到 App Service 時,您可以部署至一個分隔的部署插槽 (Slot),而並非預設的 Production 插槽(適用於標準或進階的 App Service 計畫),進行功能驗證或使用者驗收,進而進行插槽交換,無縫接上正式環境。
部署插槽是擁有 hostname 的應用程式,應用程式內容與相關設定是可以透過兩個部署插槽進行交換(包含 production 插槽)。單獨使用 staging 與 production 插槽有下列優點:
  1. 您可以在 staging 與 production 交換插槽之前驗證 App 的更改
  2. 先行部署到 staging 插槽可以確保與 production 插槽交換前先對 instance 進行暖機 (warn up)。這可以消除部署應用程式時的停機時間,讓流量無縫重新定向,不會因為交換插槽導致請求遺失。不需要驗證變更或驗證變更完成時,您可以透過設定 Auto Swap ,讓整個工作流程自動進行。
  3. 交換後,staging slot 是放置的是先前 production 應用程式。如果交換插槽後發生不如預期的情況,您可以執行相同交換工作已取得 “最後完好的網站"

加入部署插槽 (Add a Deployment Slot)
如前文所提,你的 App Service 必須在 標準/進階層 才能啟用多開發插槽功能。若 App 不是運行標準/進階層,點選 部署位置 時,您將會收到訊息,說明那些階層才支援 Staged 發佈。此時,您可以選擇升級,系統將會導引您到 相應增加 (scale) 功能頁面。



若您的使用層級是 標準/進階層,即可點選上方 加入位置 。第一次加入插槽,你只有兩個選項:從預設插槽複製設定,或沒有設定。隨時間建立越來越多插槽後,您即可從 production 中複製插槽設定。



可交換的配置包含:general settings, handler mappings, monitoring, diagnostics, 與 webjobs.
不允許交換的配置包含:publishing endpoints, custom domain names, SSl certificates 和 bindings, scale settings, 與 webjob 排程



交換部署插槽 (Swap deployment slots)
在進行交換之前,請確保所有非插槽專用的設定卻是時的設定 (完全符合要交換的目標插槽)。想要交換開發插槽,點選 app 或 開發插槽上命令欄中 “交換” 按鈕即可。





當你從其他插槽複製設置時,複製的設置是可編輯的。此外,有些設置內容是可以跨插槽(不指定特定插槽),而其他設置內容在交換之後會維持在相同的插槽中。


交換速度很快,完成後,你可以看見原先放置 ASP.NET Core Web App 換到 staging 環境,而空白 Web App 已經換上 Production。




持續部署
許多開發者想要在單一版本控管環境中工作。每當程式碼被推送到版本控管環境時,網站與 Web App 將自動更新。持續整合工作流程將從您的專案中持續發佈最新更新。在 Azure Portal ,您可以輕鬆的從 GitHub, Bitbucket, 或 Visual Studio Team Service 設定持續部署。您也可以對於 Azure Portal 不支援的主機設置持續佈署,如 GitLab。


啟用持續部署
1. 將您的 App 內容發佈到儲存庫 (將用於持續發佈)。我們建立了一個 ASP.NET MVC Application 並上傳到 Github 上。

2. 在 Azure Portal 上,您的 App 選單點選 → App Deployment → 部署選項,點選 選擇來源 ,然後進行選擇。



3. 完成授權


4. 選擇要部署的專案與分支。完成後點選確定。


App Service 將會與所選定的儲存庫建立關聯,從指定分支取回檔案,並為您的 App Service維護儲存庫的副本。當您從 Azure portal 設定 VSTS 持續佈署時,將整合App Service Kudu 部署引擎,每次 git 推送時將會執行 Build 與部署工作,您無需單獨在 VSTS 上進行設定。

5. 如果要驗證是否部署成功,您可以在 Azure portal 內,點擊 app 狀態頂端的 url 即可。



6. 如果要驗證是否觸發持續部署,您可以做一些變更後推送變更置儲存庫。推送不久後,你的應用程式應該會進行更新。您可以在部署中心 (預覽) 內看見你部署的內容。我們簡單做一個測試:將標題從 ASP.NET 改成 ASP.NET For Azure App Test,推送之後,除了可以看見紀錄,透過 url 也能發現首頁標題已經進行更改。




參考資料

相關文章