前言
前陣子微軟公告 App Service 基本定價層支援虛擬網路整合的功能 GA 了,這樣終於可以不用要到比較高的定價層才可以使用,可以節省不少費用,剛好實務上要設定,就開始了一連串的踩雷,最後終於找到解決的辦法,後面就來說明遇到的情境和提供一些解法。
說明
首先情境是我原本有一個標準定價層的 App Service,很開心的要來設定虛擬網路整合。
要新增的時候卻出現這樣的錯誤訊息,說虛擬網路沒有閘道。
到虛擬網路的子網路確認一下,確定有閘道,那為啥會顯示那樣的錯誤訊息。
那先把定價層改成之前就支援的標準定價層試看看好了。
這次比較貼心多了不一樣的提示了,可是也不對啊,不是標準跟基本定價層都支援虛擬網路整合了,怎麼會提示我要升級到進階 v2 才可以,這樣和公告不一樣啊!
最後終於在文件找到限制的說明,原來是需要是新的部署,這時候如果很開心的去建立一個新的基本定價層的 App Service 的話就會發現還是一樣會遇到前面的錯誤。前面的地雷也是我開一個新的 App Service 重現的,這時候在仔細看文件,有提到如果要確定可以使用的話需要建立一個進階 v3 的 App Service Plan 再降到基本定價層就可以了。
可是要怎樣判斷新舊部署?很簡單的判斷方式就是看是否可以切換到 Pv3 系列,如果如下圖一樣是灰色的的話代表就是舊的部署,這時候如果要使用虛擬網路整合就一定得開到 Pv2 版本才可以了。
解決方案
再來就是如何解決這個問題了,以下提供幾個方式。
重新部署 App Service
最簡單直覺的方式,就是重新建立一個 V3 版的 App Service Plan 然後調整定價層到基本,再重新部署了。
變更 App Service Plan
原本第一時間想到的會是這個解決方案,但是事實上卻是無法成功的,會出現底下的錯誤訊息,估計是因為同一個資源群組是無法同時部署 Pv2 和 Pv3 的,因為是不同的架構,會無法並存。
複製應用程式
首先建立一個新的資源群組,並且預先新增好一個 PV3 的 App Service Plan,此時先不要降到基本定價層,先維持 Pv3 或是標準定價層,假設原本的定價層是基本的話,請先升級到標準定價層,此時才會可以使用複製應用程式的功能,點開複製應用程式,選擇新建立的資源群組和 Pv3 的 App Service Plan 進行複製。
複製好之後我們確認程式沒有問題之後可以把原本服務網域重新綁定到新的 App Service Plan ,這時候我們就擁有新的 Pv3 版的 App Service 了,最後再把定價層調整到基本定價層,這樣我們就把 App Service Plan 變更成新的部署,也就可以正常在標準定價層使用虛擬網路整合了。
設定虛擬網路整合
經過了層層關卡終於沒有錯誤訊息了,這次就可以正確選擇到虛擬網路了。
事實上在選擇的時候也會發現到選擇的畫面不一樣,可以比較以下底下兩張截圖,可以發現新的部署在選擇的畫面上多了會按照不同區域來分組虛擬網路。
結論
在重現情境的時候另外也發現,新建立的 App Service Plan 也是有機會會是新的部署,一開始我建立在東南亞,建立之後再去檢查,它直接就是新的部署是可以直接切換到 Pv3 系列的,而情境遇到的則是東亞的資料中心,新建立的 App Service Plan 到本文截止前建立起來都還是會是舊的部署,應該之後 Azure 會慢慢更新才是,另外也發現原本我其它開在東南亞的 App Service Plan 也都直接被更新到可以切換到 Pv3 的定價層。