scenarios/shared/terraform/modules/frontdoor/main.tf (81 lines of code) (raw):
data "azurerm_lb" "lb" {
name = "kubernetes-internal"
resource_group_name = var.containerAppsManagedResourceGroup
}
resource "azurerm_private_link_service" "privateLinkService" {
name = var.privateLinkServiceName
resource_group_name = var.resourceGroupName
location = var.location
load_balancer_frontend_ip_configuration_ids = data.azurerm_lb.lb.frontend_ip_configuration.0.id
nat_ip_configuration {
name = "snet-provider-default-1"
primary = true
private_ip_address_version = "IPv4"
subnet_id = var.privateLinkSubnetId
}
}
data "azurerm_private_link_service_endpoint_connections" "privateEndpointConnections" {
service_id = azurerm_private_link_service.privateLinkService.id
resource_group_name = azurerm_private_link_service.privateLinkService.resource_group_name
}
resource "azurerm_cdn_frontdoor_profile" "frontDoorProfile" {
depends_on = [
azurerm_private_link_service.privateLinkService
]
name = var.frontDoorProfileName
resource_group_name = var.resourceGroupName
sku_name = "Premium_AzureFrontDoor"
response_timeout_seconds = 120
}
resource "azurerm_cdn_frontdoor_endpoint" "frontDoorEndpoint" {
name = var.frontDoorEndpointName
cdn_frontdoor_profile_id = azurerm_cdn_frontdoor_profile.frontDoorProfile.id
enabled = true
tags = var.tags
}
resource "azurerm_cdn_frontdoor_origin_group" "frontDoorOriginGroup" {
name = var.frontDoorOriginGroupName
cdn_frontdoor_profile_id = azurerm_cdn_frontdoor_profile.frontDoorProfile.id
load_balancing {
sample_size = 4
successful_samples_required = 3
additional_latency_in_milliseconds = 50
}
health_probe {
path = "/health"
request_type = "HEAD"
protocol = "Https"
interval_in_seconds = 100
}
session_affinity_enabled = false
}
resource "azurerm_cdn_frontdoor_origin" "frontDoorOrigin" {
name = var.frontDoorOriginName
cdn_frontdoor_origin_group_id = azurerm_cdn_frontdoor_origin_group.frontDoorOriginGroup.id
host_name = var.frontDoorHostName
http_port = 80
https_port = 443
origin_host_header = var.frontDoorHostName
priority = 1
weight = 100
enabled = true
private_link {
request_message = "frontdoor"
private_link_target_id = azurerm_private_link_service.privateLinkService.id
location = azurerm_private_link_service.privateLinkService.location
}
certificate_name_check_enabled = true
}
resource "azurerm_cdn_frontdoor_route" "frontDoorOriginRoute" {
name = var.frontDoorRouteName
cdn_frontdoor_origin_group_id = azurerm_cdn_frontdoor_origin_group.frontDoorOriginGroup.id
cdn_frontdoor_endpoint_id = azurerm_cdn_frontdoor_endpoint.frontDoorEndpoint.id
cdn_frontdoor_origin_ids = [azurerm_cdn_frontdoor_origin.frontDoorOrigin.id]
cdn_frontdoor_origin_path = "/"
supported_protocols = ["Http", "Https"]
patterns_to_match = ["/*"]
forwarding_protocol = "HttpsOnly"
link_to_default_domain = true
https_redirect_enabled = true
enabled = true
}