しばやん雑記

Azure Serverless とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure App Service の Regional VNET Integration が Basic SKU でも利用可能に

これまで実質的に Premium V2 / V3 が必要だった Regional VNET Integration が Basic でも利用可能になりましたが、例によって使えるかどうかはデプロイされている Scale unit に依存するので簡単にまとめます。

正確には Regional VNET Integration と Private Endpoint が Basic SKU で利用可能になりました。開発環境は Basic を使い、本番環境は Premium V2 / V3 を使うことでコストダウンが見込めます。

既に Regional VNET Integration は多くの場面で使われていると思うので説明はしませんが、興味がある方は以下のエントリを参照してください。今では App Service 最重要機能と言えます。

App Service Team Blog では Basic SKU で Regional VNET Integration が利用可能になる条件が記載されていませんでしたが、公式ドキュメントはアップデートされているので条件が追記されています。

公式ドキュメントには以下のように記載されています。要約すると Basic で Regional VNET Integration が利用可能になる条件は、今までの Standard で利用可能になるときと同じです。

つまり VMSS ベースの Scale unit にデプロイされている必要があります。

The feature is available from all App Service deployments in Premium v2 and Premium v3. It's also available in Basic and Standard tier but only from newer App Service deployments.

Integrate your app with an Azure virtual network - Azure App Service | Microsoft Docs

App Service における VMSS ベースの Scale unit について詳しく知りたい方は、以前書いた各エントリを参照してください。Cloud Services ベースと異なりシステムドライブ周りに違いが出ているのと、Cloud Services のリタイアに伴って VMSS に移行が行われると思うので、知っておいて損はありません。

現時点では App Service Plan のデプロイ時に VMSS ベースの Scale unit を確実に選択するためには、公式ドキュメントにもあるように Premium V3 を指定してデプロイするしか方法がありません。

Japan East は Premium V3 が指定できるので問題ないですが、Japan West は現時点で Premium V3 に対応していないリージョンとなるので問題が発生します。

If you want to make sure you can use the feature in a Standard App Service plan, create your app in a Premium v3 App Service plan. Those plans are only supported on our newest deployments. You can scale down if you want after the plan is created.

Integrate your app with an Azure virtual network - Azure App Service | Microsoft Docs

実際のところ Japan West は Premium V3 を指定できませんが VMSS ベースの Scale unit はデプロイされているので、運が良ければ Regional VNET Integration が Basic / Standard でも利用できます。

確認のために Japan West に Premium V2 を指定して新規にデプロイをしてみると、無事に VMSS ベースの Scale unit が割り当てられました。簡単な確認方法は Kudu でシステムドライブが C: になっているか、ホスト名で nslookup を実行して cloudapp.azure.com が返ってくるかを見ることです。

f:id:shiba-yan:20220416213450p:plain

このデプロイでは VMSS ベースの Scale unit が割り当てられたので、Basic に下げた状態でも Regional VNET Integration を構成することが可能です。実際に以下のように問題なく VNET 設定が行えました。

f:id:shiba-yan:20220416213441p:plain

Japan West については運の要素が出てきてしまうので、基本的には確実に Premium V3 を指定できる Japan East を中心に利用するのをお勧めしています。

最初に Premium V3 を指定してデプロイしてしまえば Basic に下げても VMSS のままになるので、Basic SKU で Regional VNET Integration を使うためには少し追加の作業が必要になります。ARM Template や Terraform を使っている場合は 2 回適用する必要があるので、コマンド 1 発でデプロイ可能とはいきません。

全てが VMSS ベースになってほしさしかないので、Cloud Services のリタイアを待ち続けましょう。

あえて触れてこなかった Private Endpoint に関しては Scale unit の違いによる影響はなく、全てのデプロイで既に利用可能な状態なので VMSS かどうかは関係なく利用できます。

App Service の一番安い占有プランである Basic で Regional VNET Integration と Private Endpoint がサポートされたことで、ARM Template や Terraform を使った場合にコストを最適化することが簡単になりました。

IaC を使って開発・本番でそれぞれ VNET を使った構成を用意するためには Standard 以上が必要だったので、上手く Basic を使って開発環境のコストを最適化していきましょう。