Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule przedstawiono przykład użycia prywatnego punktu końcowego i regionalnej integracji z siecią wirtualną w celu bezpiecznego łączenia dwóch aplikacji internetowych (frontonu i zaplecza) z następującą konfiguracją programu Terraform:
- Wdróż sieć wirtualną
- Tworzenie pierwszej podsieci na potrzeby integracji
- Utwórz drugą podsieć dla prywatnego punktu końcowego i wyłącz polityki sieciowe podsieci dla prywatnych punktów końcowych (ustaw
private_endpoint_network_policies_enabled = false). - Wdróż jeden plan usługi App Service typu Basic, Standard, PremiumV2, PremiumV3, IsolatedV2, Functions Premium (czasami nazywany planem Elastic Premium), wymagany dla funkcji prywatnego punktu końcowego
- Utwórz frontendową aplikację internetową z określonymi ustawieniami aplikacji w celu korzystania z prywatnej strefy DNS. Aby uzyskać więcej informacji, zobacz Strefy prywatne usługi Azure DNS.
- Podłącz aplikację frontendową do podsieci integracji
- Tworzenie aplikacji internetowej zaplecza
- Utwórz strefę prywatną DNS z nazwą strefy łącza prywatnego dla aplikacji internetowych (
privatelink.azurewebsites.net) - Połącz tę strefę z siecią wirtualną
- Utwórz prywatny punkt końcowy dla zaplecza aplikacji webowej w podsieci przeznaczonej dla punktów końcowych i zarejestruj nazwy DNS (site i SCM) w utworzonej wcześniej strefie prywatnej DNS.
Jak używać narzędzia terraform na platformie Azure
Przejdź do dokumentacji platformy Azure , aby dowiedzieć się, jak używać narzędzia terraform na platformie Azure.
Kompletny plik Terraform
Aby użyć tego pliku, zastąp symbole zastępcze <unique-frontend-app-name> i <unique-backend-app-name> (nazwa aplikacji jest używana do tworzenia unikatowej nazwy DNS na całym świecie).
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.0"
}
}
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "rg" {
name = "appservice-rg"
location = "francecentral"
}
resource "azurerm_virtual_network" "vnet" {
name = "vnet"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
address_space = ["10.0.0.0/16"]
}
resource "azurerm_subnet" "integrationsubnet" {
name = "integrationsubnet"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = ["10.0.1.0/24"]
delegation {
name = "delegation"
service_delegation {
name = "Microsoft.Web/serverFarms"
}
}
}
resource "azurerm_subnet" "endpointsubnet" {
name = "endpointsubnet"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = ["10.0.2.0/24"]
private_endpoint_network_policies_enabled = false
}
resource "azurerm_service_plan" "appserviceplan" {
name = "appserviceplan"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
os_type = "Windows"
sku_name = "P1v2"
}
resource "azurerm_windows_web_app" "frontwebapp" {
name = "<unique-frontend-app-name>"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.appserviceplan.id
site_config {}
app_settings = {
"WEBSITE_DNS_SERVER" = "168.63.129.16"
"WEBSITE_VNET_ROUTE_ALL" = "1"
}
}
resource "azurerm_app_service_virtual_network_swift_connection" "vnetintegrationconnection" {
app_service_id = azurerm_windows_web_app.frontwebapp.id
subnet_id = azurerm_subnet.integrationsubnet.id
}
resource "azurerm_windows_web_app" "backwebapp" {
name = "<unique-backend-app-name>"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
service_plan_id = azurerm_service_plan.appserviceplan.id
site_config {}
}
resource "azurerm_private_dns_zone" "dnsprivatezone" {
name = "privatelink.azurewebsites.net"
resource_group_name = azurerm_resource_group.rg.name
}
resource "azurerm_private_dns_zone_virtual_network_link" "dnszonelink" {
name = "dnszonelink"
resource_group_name = azurerm_resource_group.rg.name
private_dns_zone_name = azurerm_private_dns_zone.dnsprivatezone.name
virtual_network_id = azurerm_virtual_network.vnet.id
}
resource "azurerm_private_endpoint" "privateendpoint" {
name = "backwebappprivateendpoint"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
subnet_id = azurerm_subnet.endpointsubnet.id
private_dns_zone_group {
name = "privatednszonegroup"
private_dns_zone_ids = [azurerm_private_dns_zone.dnsprivatezone.id]
}
private_service_connection {
name = "privateendpointconnection"
private_connection_resource_id = azurerm_windows_web_app.backwebapp.id
subresource_names = ["sites"]
is_manual_connection = false
}
}
Następne kroki
Dowiedz się więcej o korzystaniu z programu Terraform na platformie Azure