Özel Uç Nokta ve sanal ağ tümleştirmesi ile güvenli bir şekilde bağlanmış iki web uygulaması oluşturma
Bu makalede, aşağıdaki terraform yapılandırmasıyla iki web uygulamasını (ön uç ve arka uç) güvenli bir şekilde bağlamak için Özel Uç Nokta ve bölgesel sanal ağ tümleştirmesinin örnek kullanımı gösterilmektedir:
- Sanal ağ dağıtma
- Tümleştirme için ilk alt ağı oluşturma
- Özel uç nokta için ikinci alt ağı oluşturun; ağ ilkelerini devre dışı bırakmak için belirli bir parametre ayarlamanız gerekir
- Özel Uç Nokta özelliği için gereken Temel, Standart, PremiumV2, PremiumV3, IsolatedV2, İşlevler Premium (bazen Elastik Premium planı olarak da adlandırılır) türünde bir App Service planı dağıtın
- Özel DNS bölgesini kullanmak için belirli uygulama ayarlarıyla ön uç web uygulaması oluşturma, diğer ayrıntılar
- Ön uç web uygulamasını tümleştirme alt ağına Bağlan
- Arka uç web uygulamasını oluşturma
- Web uygulaması için özel bağlantı bölgesinin adıyla DNS özel bölgesini oluşturma privatelink.azurewebsites.net
- Bu bölgeyi sanal ağa bağla
- Uç nokta alt ağında arka uç web uygulaması için özel uç nokta oluşturun ve DNS adlarını (web sitesi ve SCM) daha önce oluşturulan DNS özel bölgesine kaydedin
Azure'da terraform kullanma
Terraform'un Azure ile nasıl kullanılacağını öğrenmek için Azure belgelerine göz atın.
Terraform dosyasının tamamı
Bu dosyayı kullanmak için unique-frontend-app-name ve< unique-backend-app-name>> yer tutucularını <değiştirin (uygulama adı, dünya çapında benzersiz bir DNS adı oluşturmak için kullanılır).
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 = true
}
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
}
}
Sonraki adımlar
Azure'da Terraform kullanma hakkında daha fazla bilgi edinin