Azure App ServiceのMulti-plan subnet joinを試してみる

# App Service Multi-plan subnet joinとは？
Microsoft Ignite 2023で限定公開プレビューとして発表されたApp Service Multi-plan subnet join（MPSJ）とは、App ServiceのVnet統合時に1つのサブネットに対して複数のApp ServiceをVnet統合できるようになりました。

https://techcommunity.microsoft.com/t5/apps-on-azure-blog/announcing-app-service-multi-plan-subnet-join/ba-p/3971493

今までは1つのサブネットに対して1つのApp Service PlanしかVnet統合ができなかったため、複数のApp Service PlanをVnet統合を利用したうえで管理する場合にはApp Service Planの数だけサブネットを増やす必要がありました。

現在は West Central US と France Central のみで利用できるとのアナウンスがされています。今年中には複数のリージョンでのサポートが追加、来年の初めには全てのリージョンで利用可能になる予定とのことです。

注意点としてAzureポータルからの設定がまだサポートされていないので、Azure CLIを利用して設定する必要があります。

# 試してみる

まずはApp Service Planを作成します。
現在限定公開プレビューのためリージョンはFrance Centralを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/3a8db2a2-7079-94d7-7b16-650ff23b5552.png)

今回は複数App Service Planを1つのサブネットにVnet統合するため、同様の手順で2つのApp Service Planを用意します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/3faf9611-e3ed-6a38-30ba-f89277b68095.png)

上記で作成したApp Service Planを利用し、App Service（Webアプリ）を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/e34d408f-06ec-e2d1-111d-a6957595090d.png)

App Service（Webアプリ）も同様にそれぞれのApp Service Planに作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/6ce0aa75-3342-2791-bfff-4710f1c74492.png)

続いて、仮想ネットワークを作成します。
仮想ネットワーク作成の中でApp Service をVnet統合するためのsubnetを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/d1b1ce7a-424d-df4e-f50b-2805a858782f.png)


今回はこちらのsubnetに２つのApp ServiceをVnet統合で紐づけます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/07cfd93e-c52d-e074-45e5-24a2dd6a44fa.png)

AzureポータルのApp Serviceのブレードから[ネットワーク]を選択し、仮想ネットワーク統合からVnet統合の設定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/2aec4c93-6a07-0a46-9aa2-633b298479a1.png)

上記で作成した仮想ネットワークとサブネットを選択し接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/ba58e982-57a6-7d71-accf-2d184f6849a8.png)

指定したサブネットでVnet統合が設定できたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/ec8b3fbc-5efe-e53f-41ae-0569ce900feb.png)


同様の手順でAzureポータルから2つ目のApp ServiceのVnet統合を設定しよう上記で作成したサブネットを指定すると「統合に使用不可」と表示されアナウンス通りポータルからは設定ができないことを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/6d320e4d-3768-05fe-2311-1c421d65b5d1.png)


Azure CLIを利用し以下のコマンドを実行することで2つ目以降のApp ServiceのVnet統合が可能になります。
※webAppsNameやsubscriptionsIDなどは適宜環境に応じて変更してください。
```cl:Azure CLI
az resource update --name <webAppsName> --resource-type "Microsoft.Web/sites" --resource-group <resource-group-name> --set properties.virtualNetworkSubnetId="/subscriptions/ <subscriptionsID> /resourceGroups/ <resource-group-name> /providers/Microsoft.Network/virtualNetworks/ <virtualNetwork-name> /subnets/ <subnet-name> "

```

上記コマンドを実行すると、2つ目のApp Serviceも1つ目のApp Serviceと同じサブネットにVnet統合することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/abbd0f5a-3fb5-305f-26e3-b75a5909ac82.png)


Multi-plan subnet joinの対応によりシングルサブネットに複数App ServiceをVnet統合できることが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/c86367e7-420d-e688-7366-5783db136bb7.png)



# 最後に
Multi-plan subnet joinの対応はこちらの記事執筆時点の2023/12/20では限定公開プレビューの機能となっております。
そのため現時点では以下の注意点があります。

* GAではサブネットサイズの最小要件は/26となる予定。プレビュー時点では強制されていない。
* 2023/12/20時点で利用可能なリージョンはWest Central US と France Central のみ。
* 2つ目以降のApp ServiceをVnet統合するためにはCLIまたはARMを使用する必要がある。

その他細かい注意点も存在するため、公式のアナウンスページをご確認ください。



以上となります。
今回の検証が参考となれば幸いです。