Files
GSP662/modules/network/main.tf
gregory hendrickson 979b0b0eaa update network
2023-03-15 16:03:34 -07:00

205 lines
4.4 KiB
HCL

resource "google_compute_backend_service" "fancy_backend_service" {
name = "fancy-backend-service"
protocol = "HTTP"
backend {
group = google_compute_instance_group_manager.fancy_be_mig.self_link
}
health_checks = [
google_compute_http_health_check.fancy_be_hc.self_link
]
port_name = "orders"
named_port {
name = "orders"
port = "8081"
}
named_port {
name = "products"
port = "8082"
}
}
resource "google_compute_backend_service" "fancy_frontend_service" {
name = "fancy-frontend-service"
protocol = "HTTP"
backend {
group = google_compute_instance_group_manager.fancy_fe_mig.self_link
}
health_checks = [
google_compute_http_health_check.fancy_fe_hc.self_link
]
port_name = "frontend"
named_port {
name = "frontend"
port = "8080"
}
}
resource "google_compute_firewall" "allow_health_check" {
name = "allow-health-check"
network = "default"
allow {
protocol = "tcp"
ports = ["8080-8081"]
}
source_ranges = [
"130.211.0.0/22",
"35.191.0.0/16"
]
}
resource "google_compute_backend_service" "fancy_fe_frontend" {
name = "fancy-fe-frontend"
port_name = "frontend"
protocol = "HTTP"
load_balancing_scheme = "INTERNAL_SELF_MANAGED"
backend {
group = google_compute_instance_group_manager.fancy_fe_mig.self_link
}
health_checks = [
google_compute_http_health_check.fancy_fe_frontend_hc.self_link
]
}
resource "google_compute_backend_service" "fancy_be_orders" {
name = "fancy-be-orders"
port_name = "orders"
protocol = "HTTP"
load_balancing_scheme = "INTERNAL_SELF_MANAGED"
backend {
group = google_compute_instance_group_manager.fancy_be_mig.self_link
}
health_checks = [
google_compute_http_health_check.fancy_be_orders_hc.self_link
]
}
resource "google_compute_backend_service" "fancy_be_products" {
name = "fancy-be-products"
port_name = "products"
protocol = "HTTP"
load_balancing_scheme = "INTERNAL_SELF_MANAGED"
backend {
group = google_compute_instance_group_manager.fancy_be_mig.self_link
}
health_checks = [
google_compute_http_health_check.fancy_be_products_hc.self_link
]
}
resource "google_compute_url_map" "fancy_map" {
name = "fancy-map"
default_service = google_compute_backend_service.fancy_fe_frontend.self_link
}
resource "google_compute_path_matcher" "fancy_path_matcher" {
name = "orders"
default_service = google_compute_backend_service.fancy_fe_frontend.self_link
path_rule {
paths = ["/api/orders"]
service = google_compute_backend_service.fancy_be_orders.self_link
}
path_rule {
paths = ["/api/products"]
service = google_compute_backend_service.fancy_be_products.self_link
}
url_map = google_compute_url_map.fancy_map.self_link
}
resource "google_compute_target_http_proxy" "fancy_proxy" {
name = "fancy-proxy"
url_map = google_compute_url_map.fancy_map.self_link
}
resource "google_compute_global_forwarding_rule" "fancy_http_rule" {
name = "fancy-http-rule"
target = google_compute_target_http_proxy.fancy_proxy.self_link
port_range = "80"
}
## Firewall Rules to allow Front-End and Back-End
resource "google_compute_firewall" "fw_fe" {
name = "fw-fe"
network = "default"
allow {
protocol = "tcp"
ports = ["8080"]
}
target_tags = ["frontend"]
}
resource "google_compute_firewall" "fw_be" {
name = "fw-be"
network = "default"
allow {
protocol = "tcp"
ports = ["8081-8082"]
}
target_tags = ["backend"]
}
#Create HealthChecks
resource "google_compute_http_health_check" "fancy_fe_hc" {
name = "fancy-fe-hc"
port = "8080"
request_path = "/"
check_interval_sec = 30
timeout_sec = 10
healthy_threshold = 1
unhealthy_threshold = 3
}
resource "google_compute_http_health_check" "fancy_be_hc" {
name = "fancy-be-hc"
port = "8081"
request_path = "/api/orders"
check_interval_sec = 30
timeout_sec = 10
healthy_threshold = 1
unhealthy_threshold = 3
}
resource "google_compute_http_health_check" "fancy_fe_frontend_hc" {
name = "fancy-fe-frontend-hc"
request_path = "/"
port = 8080
}
resource "google_compute_http_health_check" "fancy_be_orders_hc" {
name = "fancy-be-orders-hc"
request_path = "/api/orders"
port = 8081
}
resource "google_compute_http_health_check" "fancy_be_products_hc" {
name = "fancy-be-products-hc"
request_path = "/api/products"
port = 8082
}