INFRA-0002: Dedicated Subnet for App Service VNet Integration
Status
Accepted
Date
2026-03-25
Context
Azure App Service VNet Integration requires a subnet delegated to Microsoft.Web/serverFarms. When implementing INFRA-0001, we needed to determine what subnet the App Service should use.
The nonprod VNet (rg-eshars-nonprod, 10.1.0.0/16) had existing subnets:
default(10.1.0.0/24) — hosting VMs including the SSRS VM (vm-sql16-npat 10.1.0.4) and App Gatewaysn-agw-eshars-np— dedicated to App Gateway
The prod VNet (rg-eshars-prod, 10.0.0.0/16) had:
default(10.0.0.0/24) — hosting VMs including the SSRS VM (vm-ssrs16-prodat 10.0.0.5)AzureBastionSubnet(10.0.1.0/26)
Decision
Create a new, dedicated subnet for App Service VNet integration in each environment rather than reusing an existing subnet.
- Nonprod:
sn-webapp-eshars-npat10.1.3.0/24 - Prod:
sn-webapp-eshars-prodat10.0.3.0/24 - Both delegated exclusively to
Microsoft.Web/serverFarms
Alternatives Considered
Alternative 1: Reuse the default subnet
Place the App Service delegation on the existing default subnet alongside the VMs.
Rejected: Azure does not allow a subnet with existing resources to be delegated to Microsoft.Web/serverFarms. The delegation would require the subnet to be empty first, which would mean migrating or deleting the existing VMs. High disruption, high risk.
Alternative 2: Reuse the App Gateway subnet
Share sn-agw-eshars-np with the App Gateway.
Rejected: Subnets delegated to Microsoft.Web/serverFarms cannot host other resource types. App Gateway requires its own subnet and cannot share with delegated subnets.
Consequences
Positive
- Clean separation of concerns — VMs, App Gateway, and App Services each have their own subnet
- Delegation is unambiguous — no resource conflicts
- Future App Services or slots can use the same subnet without changes
Negative
- Consumes additional address space. Chose /24 (254 usable addresses) which is more than needed now, but provides room for expansion without subnet changes.
Neutral
- Subnet size choice (10.1.3.0/24 / 10.0.3.0/24) was selected to leave address ranges 10.1.1.0/24, 10.1.2.0/24, 10.0.2.0/24 available for future use. Avoids backing into a corner if more subnets are needed later.