Мне нужна помощь в настройке инфраструктуры Azure в Terraform. У меня есть служба приложений A, которая находится во vnetA в подсети A, и служба приложений B в vnetB и подсети B. AppA, vnetA и subnetA были созданы вручную уже давно, а ресурсы B я создал сам в Terraform. Я добавил пиринг виртуальной сети между двумя виртуальными сетями, но при вызове приложения B из приложения A я все равно получаю ошибку 403.
resource "azurerm_subnet" "subnetB" {
name = "subnetB"
resource_group_name = "rgB"
virtual_network_name = "vnetB"
address_prefixes = [cidrsubnet(azurerm_virtual_network.vnetB.address_space[0], 2, 1)]
delegation {
name = "appServiceDelegation"
service_delegation {
name = "Microsoft.Web/serverFarms"
actions = ["Microsoft.Network/virtualNetworks/subnets/action"]
}
}
service_endpoints = ["Microsoft.Web"]
}
Что мне не хватает?
Я ответил на подобные вопросы: в подсети B я добавил как делегирование службы приложений, так и конечные точки службы, как было рекомендовано (здесь), но это не устранило проблему.
Обновление: я проверил, что адресные пространства этих виртуальных сетей не перекрываются (поскольку это одна из возможных причин невозможности установить пиринг виртуальных сетей).
После значительной настройки моего кода Terraform для сервиса B (спасибо, Винай Б), я нашел причину, по которой получаю ошибку 403. Когда я зашел в раздел «Сеть» функции B и просмотрел конфигурацию входящего трафика, в списке «Доступ к сайту и правила» я увидел это предупреждение.
и при наведении курсора на предупреждающий знак я получил следующее: Итак, оказывается, что в подсети A (которой я не управлял через Terraform) не была настроена конечная точка Microsoft.Web. Когда я добавил конечную точку вручную, я наконец начал получать 200 ответов.
Вы правы: обеспечение того, чтобы адресные пространства двух виртуальных сетей (VNets) не перекрывались, действительно является критически важным требованием для успешного установления пиринга виртуальных сетей в Azure. Для меня это работает так, как и ожидалось, когда мы проверяем, что IP-адреса не перекрываются. @sobrod