176 lines
6.5 KiB
HCL
176 lines
6.5 KiB
HCL
# Virtual Network to deploy resources into
|
|
resource "azurerm_virtual_network" "default" {
|
|
name = "${var.name}-vnet"
|
|
location = "${azurerm_resource_group.default.location}"
|
|
resource_group_name = "${azurerm_resource_group.default.name}"
|
|
address_space = ["${var.vnet_address_space}"]
|
|
}
|
|
|
|
# Subnets
|
|
resource "azurerm_subnet" "aks" {
|
|
name = "${var.name}-aks-subnet"
|
|
resource_group_name = "${azurerm_resource_group.default.name}"
|
|
address_prefix = "${var.vnet_aks_subnet_space}"
|
|
virtual_network_name = "${azurerm_virtual_network.default.name}"
|
|
}
|
|
|
|
resource "azurerm_subnet" "ingress" {
|
|
name = "${var.name}-ingress-subnet"
|
|
resource_group_name = "${azurerm_resource_group.default.name}"
|
|
virtual_network_name = "${azurerm_virtual_network.default.name}"
|
|
address_prefix = "${var.vnet_ingress_subnet_space}"
|
|
}
|
|
|
|
resource "azurerm_subnet" "gateway" {
|
|
name = "${var.name}-gateway-subnet"
|
|
resource_group_name = "${azurerm_resource_group.default.name}"
|
|
virtual_network_name = "${azurerm_virtual_network.default.name}"
|
|
address_prefix = "${var.vnet_gateway_subnet_space}"
|
|
}
|
|
|
|
# Network security groups
|
|
resource azurerm_network_security_group "aks" {
|
|
name = "${var.name}-aks-nsg"
|
|
location = "${azurerm_resource_group.default.location}"
|
|
resource_group_name = "${azurerm_resource_group.default.name}"
|
|
}
|
|
|
|
resource azurerm_network_security_group "ingress" {
|
|
name = "${var.name}-ingress-nsg"
|
|
location = "${azurerm_resource_group.default.location}"
|
|
resource_group_name = "${azurerm_resource_group.default.name}"
|
|
}
|
|
|
|
resource azurerm_network_security_group "gateway" {
|
|
name = "${var.name}-gateway-nsg"
|
|
location = "${azurerm_resource_group.default.location}"
|
|
resource_group_name = "${azurerm_resource_group.default.name}"
|
|
}
|
|
|
|
# Network security group associations
|
|
resource "azurerm_subnet_network_security_group_association" "aks" {
|
|
subnet_id = "${azurerm_subnet.aks.id}"
|
|
network_security_group_id = "${azurerm_network_security_group.aks.id}"
|
|
}
|
|
|
|
resource "azurerm_subnet_network_security_group_association" "ingress" {
|
|
subnet_id = "${azurerm_subnet.ingress.id}"
|
|
network_security_group_id = "${azurerm_network_security_group.ingress.id}"
|
|
}
|
|
|
|
resource "azurerm_subnet_network_security_group_association" "gateway" {
|
|
subnet_id = "${azurerm_subnet.gateway.id}"
|
|
network_security_group_id = "${azurerm_network_security_group.gateway.id}"
|
|
}
|
|
|
|
|
|
locals {
|
|
|
|
gateway_name = "${var.dns_prefix}-${var.name}-${var.environment}-gateway"
|
|
gateway_ip_name = "${var.dns_prefix}-${var.name}-${var.environment}-gateway-ip"
|
|
gateway_ip_config_name = "${var.name}-gateway-ipconfig"
|
|
frontend_port_name = "${var.name}-gateway-feport"
|
|
frontend_ip_configuration_name = "${var.name}-gateway-feip"
|
|
backend_address_pool_name = "${var.name}-gateway-bepool"
|
|
http_setting_name = "${var.name}-gateway-http"
|
|
probe_name = "${var.name}-gateway-probe"
|
|
listener_name = "${var.name}-gateway-lstn"
|
|
ssl_name = "${var.name}-gateway-ssl"
|
|
url_path_map_name = "${var.name}-gateway-urlpath"
|
|
url_path_map_rule_name = "${var.name}-gateway-urlrule"
|
|
request_routing_rule_name = "${var.name}-gateway-router"
|
|
}
|
|
|
|
resource "azurerm_public_ip" "gateway" {
|
|
name = "${local.gateway_ip_name}"
|
|
resource_group_name = "${azurerm_resource_group.default.name}"
|
|
location = "${azurerm_resource_group.default.location}"
|
|
domain_name_label = "${local.gateway_name}"
|
|
allocation_method = "Static"
|
|
sku = "Standard"
|
|
}
|
|
|
|
resource "azurerm_application_gateway" "gateway" {
|
|
name = "${local.gateway_name}"
|
|
resource_group_name = "${azurerm_resource_group.default.name}"
|
|
location = "${azurerm_resource_group.default.location}"
|
|
|
|
sku {
|
|
name = "WAF_v2"
|
|
tier = "WAF_v2"
|
|
capacity = "${var.gateway_instance_count}"
|
|
}
|
|
|
|
gateway_ip_configuration {
|
|
name = "${local.gateway_ip_config_name}"
|
|
subnet_id = "${azurerm_subnet.gateway.id}"
|
|
}
|
|
|
|
frontend_port {
|
|
name = "${local.frontend_port_name}-http"
|
|
port = 80
|
|
}
|
|
|
|
frontend_port {
|
|
name = "${local.frontend_port_name}-https"
|
|
port = 443
|
|
}
|
|
|
|
frontend_ip_configuration {
|
|
name = "${local.frontend_ip_configuration_name}"
|
|
public_ip_address_id = "${azurerm_public_ip.gateway.id}"
|
|
}
|
|
|
|
backend_address_pool {
|
|
name = "${local.backend_address_pool_name}"
|
|
ip_addresses = ["${var.ingress_load_balancer_ip}"]
|
|
}
|
|
|
|
backend_http_settings {
|
|
name = "${local.http_setting_name}"
|
|
cookie_based_affinity = "Disabled"
|
|
port = 80
|
|
protocol = "http"
|
|
request_timeout = 1
|
|
probe_name = "${local.probe_name}"
|
|
}
|
|
|
|
http_listener {
|
|
name = "${local.listener_name}-http"
|
|
frontend_ip_configuration_name = "${local.frontend_ip_configuration_name}"
|
|
frontend_port_name = "${local.frontend_port_name}-http"
|
|
protocol = "http"
|
|
}
|
|
|
|
probe {
|
|
name = "${local.probe_name}"
|
|
protocol = "http"
|
|
path = "/nginx-health"
|
|
interval = 30
|
|
timeout = 30
|
|
unhealthy_threshold = 3
|
|
host = "${var.ingress_load_balancer_ip}"
|
|
}
|
|
|
|
request_routing_rule {
|
|
name = "${local.request_routing_rule_name}-http"
|
|
rule_type = "PathBasedRouting"
|
|
http_listener_name = "${local.listener_name}-http"
|
|
url_path_map_name = "${local.url_path_map_name}"
|
|
}
|
|
|
|
url_path_map {
|
|
name = "${local.url_path_map_name}"
|
|
default_backend_address_pool_name = "${local.backend_address_pool_name}"
|
|
default_backend_http_settings_name = "${local.http_setting_name}"
|
|
|
|
path_rule {
|
|
name = "${local.url_path_map_rule_name}"
|
|
backend_address_pool_name = "${local.backend_address_pool_name}"
|
|
backend_http_settings_name = "${local.http_setting_name}"
|
|
paths = [
|
|
"/*"
|
|
]
|
|
}
|
|
}
|
|
} |