Включение интеграции с виртуальной сетью в Службе приложений Azure
Интеграция с виртуальной сетью Azure из приложения Служба приложений Azure позволяет получать доступ к частным ресурсам приложения в виртуальной сети.
Предварительные требования
Для интеграции с виртуальной сетью требуется:
- Ценовая категория Службы приложений, которая поддерживает интеграцию с виртуальной сетью.
- Виртуальная сеть в том же регионе с пустой подсетью.
Подсеть должна быть делегирована в Microsoft.Web/serverFarms. Если делегирование не выполнено до интеграции, процесс подготовки настраивает это делегирование. Подсети необходимо выделить блок IPv4 /28
(16 адресов). Рекомендуется использовать не менее 64 адресов (блоков IPv4 /26
), чтобы обеспечить максимальное горизонтальное масштабирование.
Если виртуальная сеть находится не в той же подписке, что и приложение, необходимо убедиться, что подписка с виртуальной сетью зарегистрирована для поставщика ресурсов Microsoft.Web
. Вы можете явно зарегистрировать поставщика, следуя этой документации, но он автоматически регистрируется при создании первого веб-приложения в подписке.
Настройка на портале Azure
Откройте раздел интерфейса Сеть на портале Службы приложений. В разделе Конфигурация исходящего трафика выберите Интеграция с виртуальной сетью.
Выберите Добавить интеграцию с виртуальной сетью.
Раскрывающийся список содержит все виртуальные сети в подписке в одном регионе. Выберите пустую существующую подсеть или создайте новую подсеть.
Во время интеграции приложение перезапускается. После завершения интеграции вы увидите сведения о виртуальной сети, с которыми вы интегрированы.
Настройка с помощью Azure CLI
Вы также можете настроить интеграцию с виртуальной сетью с помощью Azure CLI:
az webapp vnet-integration add --resource-group <group-name> --name <app-name> --vnet <vnet-name> --subnet <subnet-name>
Примечание
Команда проверяет, делегирована ли подсеть в Microsoft.Web/serverFarms, и применяет необходимое делегирование, если оно не настроено. Если подсеть настроена и у вас нет разрешений на ее проверка или виртуальная сеть находится в другой подписке, можно использовать --skip-delegation-check
параметр для обхода проверки.
Настройка с помощью Azure PowerShell
Подготовка параметров.
$siteName = '<app-name>'
$vNetResourceGroupName = '<group-name>'
$webAppResourceGroupName = '<group-name>'
$vNetName = '<vnet-name>'
$integrationSubnetName = '<subnet-name>'
$vNetSubscriptionId = '<subscription-guid>'
Примечание
Если виртуальная сеть находится в другой подписке, отличной от webapp, можно использовать команду Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx" , чтобы задать контекст текущей подписки. Задайте для текущего контекста подписки подписку, в которой была развернута виртуальная сеть.
Проверьте, делегирована ли подсеть Microsoft.Web/serverFarms.
$vnet = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $vNetResourceGroupName
$subnet = Get-AzVirtualNetworkSubnetConfig -Name $integrationSubnetName -VirtualNetwork $vnet
Get-AzDelegation -Subnet $subnet
Если подсеть не делегирована Microsoft.Web/serverFarms, добавьте делегирование с помощью приведенных ниже команд.
$subnet = Add-AzDelegation -Name "myDelegation" -ServiceName "Microsoft.Web/serverFarms" -Subnet $subnet
Set-AzVirtualNetwork -VirtualNetwork $vnet
Настройка интеграции с виртуальной сетью.
Примечание
Если веб-приложение находится в другой подписке, отличной от виртуальной сети, можно использовать команду Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx" , чтобы задать контекст текущей подписки. Задайте для текущего контекста подписки подписку, в которой было развернуто веб-приложение.
$subnetResourceId = "/subscriptions/$vNetSubscriptionId/resourceGroups/$vNetResourceGroupName/providers/Microsoft.Network/virtualNetworks/$vNetName/subnets/$integrationSubnetName"
$webApp = Get-AzResource -ResourceType Microsoft.Web/sites -ResourceGroupName $webAppResourceGroupName -ResourceName $siteName
$webApp.Properties.virtualNetworkSubnetId = $subnetResourceId
$webApp.Properties.vnetRouteAllEnabled = 'true'
$webApp | Set-AzResource -Force