hashicorp / terraform-provider-google

Terraform Provider for Google Cloud Platform
https://registry.terraform.io/providers/hashicorp/google/latest/docs
Mozilla Public License 2.0
2.25k stars 1.7k forks source link

Terraform module to create non-classic Global HTTP(S) with serverless negs. #12117

Open zhan5380 opened 1 year ago

zhan5380 commented 1 year ago

Is there any terraform module to create non-classic Global HTTP(S) with serverless negs?

ljluestc commented 9 months ago
resource "google_compute_global_address" "lb_ip" {
  name          = "lb-ip"
  project       = var.project_id
  purpose       = "GLOBALLY_UNIQUE"
  address_type  = "EXTERNAL"
}

resource "google_compute_region_backend_service" "backend_service" {
  name     = "backend-service"
  project  = var.project_id
  region   = var.region

  backend {
    group         = google_compute_backend_bucket.serverless_bucket.self_link
    balancing_mode = "RATE"
    max_rate_per_instance = 1000
  }
}

resource "google_compute_backend_bucket" "serverless_bucket" {
  name        = "serverless-bucket"
  project     = var.project_id
  bucket_name = var.serverless_bucket_name
}

resource "google_compute_health_check" "hc" {
  name       = "health-check"
  project    = var.project_id
  check_interval_sec = 1
  timeout_sec       = 1
  tcp_health_check {
    port = 80
  }
}

resource "google_compute_url_map" "url_map" {
  name        = "url-map"
  project     = var.project_id
  default_service = google_compute_region_backend_service.backend_service.self_link
}

resource "google_compute_target_https_proxy" "lb_proxy" {
  name        = "lb-proxy"
  project     = var.project_id
  url_map     = google_compute_url_map.url_map.self_link
  ssl_policy  = "projects/${var.project_id}/global/sslPolicies/my-ssl-policy"
  quic_override   = "DISABLE"
  region      = var.region
}

resource "google_compute_global_forwarding_rule" "lb_forwarding_rule" {
  name       = "lb-forwarding-rule"
  project    = var.project_id
  target     = google_compute_target_https_proxy.lb_proxy.self_link
  global_address = google_compute_global_address.lb_ip.self_link
  port_range = "443"
  ip_protocol = "TCP"
}

output "load_balancer_ip" {
  value = google_compute_global_address.lb_ip.address
}
pawelJas commented 1 month ago

google_compute_backend_bucket is not a serverless NEG.

Please see backends[].group definition in https://cloud.google.com/compute/docs/reference/rest/v1/backendServices and later a NEG detailed doc: https://cloud.google.com/load-balancing/docs/negs/ Serverless NEG are not supported by Global Backend Services.