From 5a5674d12f4e1ec40838778331359225211f331d Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 11:49:50 +0000 Subject: [PATCH 01/25] adding custom url map and additional backends --- gcp/cloud-run-v2/main.tf | 45 +++++++++++++++++++++-------------- gcp/cloud-run-v2/variables.tf | 12 ++++++++++ 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index 7db0886..1c5ea4e 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -197,27 +197,36 @@ module "lb-http" { https_redirect = true # Enable HTTPS redirect random_certificate_suffix = true - backends = { - default = { - groups = [ - { - group = google_compute_region_network_endpoint_group.cloudrun_neg[count.index].id - } - ] + url_map = var.url_map + create_url_map = var.url_map == null ? true : false + + dynamic "backends" { + for_each = var.additional_backend_services + backends = { + default = { + groups = [ + { + group = google_compute_region_network_endpoint_group.cloudrun_neg[count.index].id + }, + { + group = each.value + } + ] - description = "Backend for Cloud Run service" - enable_cdn = false - custom_request_headers = ["X-Client-Geo-Location: {client_region_subdivision}, {client_city}"] - custom_response_headers = ["X-Cache-Hit: {cdn_cache_status}"] + description = "Backend for Cloud Run service" + enable_cdn = false + custom_request_headers = ["X-Client-Geo-Location: {client_region_subdivision}, {client_city}"] + custom_response_headers = ["X-Cache-Hit: {cdn_cache_status}"] - # Clour Armor security - security_policy = var.cloud_armor.enabled ? google_compute_security_policy.cloud_armor_policy[0].self_link : null + # Clour Armor security + security_policy = var.cloud_armor.enabled ? google_compute_security_policy.cloud_armor_policy[0].self_link : null - log_config = { - enable = false - } - iap_config = { - enable = false + log_config = { + enable = false + } + iap_config = { + enable = false + } } } } diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index 736d65c..3691a3d 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -296,6 +296,18 @@ variable "enable_custom_domain" { default = true } +variable "url_map" { + description = "URL map to be used in the load balancer" + type = string + default = null +} + +variable "additional_backend_services" { + description = "Additional backend services to be used in the load balancer" + type = list(string) + default = [] +} + variable "startup_cpu_boost" { description = "CPU boost for the Cloud Run container" type = bool From d415150961faab35e2c2dc96a99ff0e2290d8859 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 13:55:19 +0000 Subject: [PATCH 02/25] passing dynamic backends --- gcp/cloud-run-v2/main.tf | 40 ++++++++++++++--------------------- gcp/cloud-run-v2/variables.tf | 24 +++++++++++++++++++-- 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index 1c5ea4e..0d30db0 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -200,36 +200,28 @@ module "lb-http" { url_map = var.url_map create_url_map = var.url_map == null ? true : false - dynamic "backends" { - for_each = var.additional_backend_services - backends = { - default = { + backends = merge( + { + "default" = merge(var.default_backend_service, { groups = [ { - group = google_compute_region_network_endpoint_group.cloudrun_neg[count.index].id - }, - { - group = each.value + group = google_compute_region_network_endpoint_group.cloudrun_neg[0].id } ] - - description = "Backend for Cloud Run service" - enable_cdn = false - custom_request_headers = ["X-Client-Geo-Location: {client_region_subdivision}, {client_city}"] - custom_response_headers = ["X-Cache-Hit: {cdn_cache_status}"] - - # Clour Armor security security_policy = var.cloud_armor.enabled ? google_compute_security_policy.cloud_armor_policy[0].self_link : null - - log_config = { - enable = false - } - iap_config = { - enable = false - } - } + }) + }, + { for key, value in var.additional_backend_services : + key => merge(var.default_backend_service, { + groups = [ + { + group = value.group + } + ] + security_policy = value.cloud_armor ? google_compute_security_policy.cloud_armor_policy[0].self_link : null + }) } - } + ) } resource "google_eventarc_trigger" "default" { diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index 3691a3d..c351b90 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -302,10 +302,30 @@ variable "url_map" { default = null } +variable "default_service_config" { + description = "Default service configuration to be used in the load balancer" + type = map(any) + default = { + description = "Backend for Cloud Run service" + enable_cdn = false + custom_request_headers = ["X-Client-Geo-Location: {client_region_subdivision}, {client_city}"] + custom_response_headers = ["X-Cache-Hit: {cdn_cache_status}"] + log_config = { + enable = false + } + iap_config = { + enable = false + } + } +} + variable "additional_backend_services" { description = "Additional backend services to be used in the load balancer" - type = list(string) - default = [] + type = map(object({ + group = string + cloud_armor = bool + })) + default = {} } variable "startup_cpu_boost" { From 45da59195c6a7ceabd37dc94a6f04c5111a00d4b Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 14:17:29 +0000 Subject: [PATCH 03/25] type definition --- gcp/cloud-run-v2/variables.tf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index c351b90..a1ff1df 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -322,8 +322,10 @@ variable "default_service_config" { variable "additional_backend_services" { description = "Additional backend services to be used in the load balancer" type = map(object({ - group = string - cloud_armor = bool + key = map(object({ + group = string + cloud_armor = bool + })) })) default = {} } From bea30903e0e29e5e51abac613747dbdfb36eda3e Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 14:41:28 +0000 Subject: [PATCH 04/25] backend config in local --- gcp/cloud-run-v2/main.tf | 16 ++++++++++++++-- gcp/cloud-run-v2/variables.tf | 17 ----------------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index 0d30db0..6ed2fa1 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -5,6 +5,18 @@ data "google_project" "current" { locals { cloud_armor_rules = var.cloud_armor.enabled ? yamldecode(file(var.cloud_armor.rules_file_path)) : [] domain = var.custom_domain != null ? var.custom_domain : var.environment == "prod" ? "${var.name}.${var.domain_host}" : var.environment == "preview" ? "${var.name}-preview.${var.domain_host}" : "${var.name}-preprod.${var.domain_host}" + default_backend_config = { + description = "Backend for Cloud Run service" + enable_cdn = false + custom_request_headers = ["X-Client-Geo-Location: {client_region_subdivision}, {client_city}"] + custom_response_headers = ["X-Cache-Hit: {cdn_cache_status}"] + log_config = { + enable = false + } + iap_config = { + enable = false + } + } } # Resource configuration for deploying a Google Cloud Run service @@ -202,7 +214,7 @@ module "lb-http" { backends = merge( { - "default" = merge(var.default_backend_service, { + "default" = merge(local.default_backend_service, { groups = [ { group = google_compute_region_network_endpoint_group.cloudrun_neg[0].id @@ -212,7 +224,7 @@ module "lb-http" { }) }, { for key, value in var.additional_backend_services : - key => merge(var.default_backend_service, { + key => merge(local.default_backend_service, { groups = [ { group = value.group diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index a1ff1df..e92af40 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -302,23 +302,6 @@ variable "url_map" { default = null } -variable "default_service_config" { - description = "Default service configuration to be used in the load balancer" - type = map(any) - default = { - description = "Backend for Cloud Run service" - enable_cdn = false - custom_request_headers = ["X-Client-Geo-Location: {client_region_subdivision}, {client_city}"] - custom_response_headers = ["X-Cache-Hit: {cdn_cache_status}"] - log_config = { - enable = false - } - iap_config = { - enable = false - } - } -} - variable "additional_backend_services" { description = "Additional backend services to be used in the load balancer" type = map(object({ From 34976b6cd8315b74ac0e2fda439dc290c9d3986e Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 14:51:25 +0000 Subject: [PATCH 05/25] local rename --- gcp/cloud-run-v2/main.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index 6ed2fa1..8ea3bac 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -214,7 +214,7 @@ module "lb-http" { backends = merge( { - "default" = merge(local.default_backend_service, { + "default" = merge(local.default_backend_config, { groups = [ { group = google_compute_region_network_endpoint_group.cloudrun_neg[0].id @@ -224,7 +224,7 @@ module "lb-http" { }) }, { for key, value in var.additional_backend_services : - key => merge(local.default_backend_service, { + key => merge(local.default_backend_config, { groups = [ { group = value.group From 36c44a07d6590955774d25e3e08d9175277240c1 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 15:03:30 +0000 Subject: [PATCH 06/25] type again --- gcp/cloud-run-v2/variables.tf | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index e92af40..fb4041b 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -304,11 +304,9 @@ variable "url_map" { variable "additional_backend_services" { description = "Additional backend services to be used in the load balancer" - type = map(object({ - key = map(object({ - group = string - cloud_armor = bool - })) + type = map(object({ + group = string + cloud_run = bool })) default = {} } From 9d5323934ca9d5fff4fa5f6b736ba222091c7f93 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 15:50:02 +0000 Subject: [PATCH 07/25] output for default backend --- gcp/cloud-run-v2/outputs.tf | 5 +++++ test/gcp/.terraform.tfstate.lock.info | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) delete mode 100644 test/gcp/.terraform.tfstate.lock.info diff --git a/gcp/cloud-run-v2/outputs.tf b/gcp/cloud-run-v2/outputs.tf index 5ddca76..9d30051 100644 --- a/gcp/cloud-run-v2/outputs.tf +++ b/gcp/cloud-run-v2/outputs.tf @@ -12,3 +12,8 @@ output "external_ip" { description = "value" value = length(module.lb-http) > 0 ? module.lb-http[0].external_ip : null } + +output "default_backend_self_link" { + description = "" + value = length(module.lb-http) > 0 ? module.lb-http["default"].self_link : null +} diff --git a/test/gcp/.terraform.tfstate.lock.info b/test/gcp/.terraform.tfstate.lock.info deleted file mode 100644 index 6718aae..0000000 --- a/test/gcp/.terraform.tfstate.lock.info +++ /dev/null @@ -1 +0,0 @@ -{"ID":"79a634f7-ef80-19b2-3e35-91eb38257f2f","Operation":"OperationTypePlan","Info":"","Who":"miguelpg@nandos-mpg.local","Version":"1.6.6","Created":"2024-01-31T18:29:07.960201Z","Path":"terraform.tfstate"} \ No newline at end of file From 870bfc215c3eb759373d73e4986559b984c171a6 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 16:45:30 +0000 Subject: [PATCH 08/25] cloud_armor --- gcp/cloud-run-v2/variables.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index fb4041b..f6c8814 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -306,7 +306,7 @@ variable "additional_backend_services" { description = "Additional backend services to be used in the load balancer" type = map(object({ group = string - cloud_run = bool + cloud_armor = bool })) default = {} } From c27f09e4e8d2f57613b9f57d16f9cf3cdbb825d0 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 16:49:44 +0000 Subject: [PATCH 09/25] backend_services --- gcp/cloud-run-v2/outputs.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcp/cloud-run-v2/outputs.tf b/gcp/cloud-run-v2/outputs.tf index 9d30051..7b145e9 100644 --- a/gcp/cloud-run-v2/outputs.tf +++ b/gcp/cloud-run-v2/outputs.tf @@ -15,5 +15,5 @@ output "external_ip" { output "default_backend_self_link" { description = "" - value = length(module.lb-http) > 0 ? module.lb-http["default"].self_link : null + value = length(module.lb-http) > 0 ? module.lb-http.backend_services["default"].self_link : null } From 66d96c3dae2c97bead1215239de6dce8b1da06c6 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 16:51:41 +0000 Subject: [PATCH 10/25] [0]backend_services --- gcp/cloud-run-v2/outputs.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcp/cloud-run-v2/outputs.tf b/gcp/cloud-run-v2/outputs.tf index 7b145e9..d79519d 100644 --- a/gcp/cloud-run-v2/outputs.tf +++ b/gcp/cloud-run-v2/outputs.tf @@ -15,5 +15,5 @@ output "external_ip" { output "default_backend_self_link" { description = "" - value = length(module.lb-http) > 0 ? module.lb-http.backend_services["default"].self_link : null + value = length(module.lb-http) > 0 ? module.lb-http[0].backend_services["default"].self_link : null } From 77df3578ba3467ca6c81d235c293792815316eca Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 17:03:41 +0000 Subject: [PATCH 11/25] dynamic outputs --- gcp/cloud-run-v2/outputs.tf | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gcp/cloud-run-v2/outputs.tf b/gcp/cloud-run-v2/outputs.tf index d79519d..17271cc 100644 --- a/gcp/cloud-run-v2/outputs.tf +++ b/gcp/cloud-run-v2/outputs.tf @@ -13,7 +13,9 @@ output "external_ip" { value = length(module.lb-http) > 0 ? module.lb-http[0].external_ip : null } -output "default_backend_self_link" { - description = "" - value = length(module.lb-http) > 0 ? module.lb-http[0].backend_services["default"].self_link : null +output "default_backend_self_links" { + description = "Self links of default backend services" + value = { + for key, value in additional_backend_services : key => length(module.lb-http) > 0 ? module.lb-http[0].backend_services["${key}"].self_link : null + } } From 9fef1d1f41ed32ec6dd4dedd4a3fcac6715972e1 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 17:06:37 +0000 Subject: [PATCH 12/25] all backends --- gcp/cloud-run-v2/outputs.tf | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gcp/cloud-run-v2/outputs.tf b/gcp/cloud-run-v2/outputs.tf index 17271cc..08130a6 100644 --- a/gcp/cloud-run-v2/outputs.tf +++ b/gcp/cloud-run-v2/outputs.tf @@ -13,9 +13,7 @@ output "external_ip" { value = length(module.lb-http) > 0 ? module.lb-http[0].external_ip : null } -output "default_backend_self_links" { - description = "Self links of default backend services" - value = { - for key, value in additional_backend_services : key => length(module.lb-http) > 0 ? module.lb-http[0].backend_services["${key}"].self_link : null - } +output "backends_access" { + description = "" + value = length(module.lb-http) > 0 ? module.lb-http[0].backend_services : null } From 0d600d8acf451b1e4072f46c0cd1467c018c5233 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 18:03:42 +0000 Subject: [PATCH 13/25] create_url_map --- gcp/cloud-run-v2/main.tf | 2 +- gcp/cloud-run-v2/variables.tf | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index 8ea3bac..a882776 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -210,7 +210,7 @@ module "lb-http" { random_certificate_suffix = true url_map = var.url_map - create_url_map = var.url_map == null ? true : false + create_url_map = var.create_url_map backends = merge( { diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index f6c8814..9f13687 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -302,6 +302,12 @@ variable "url_map" { default = null } +variable "create_url_map" { + description = "Create a URL map for the load balancer" + type = bool + default = true +} + variable "additional_backend_services" { description = "Additional backend services to be used in the load balancer" type = map(object({ From b223feef21a76fe309bfb91010018dfb32a71a7c Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 19:58:20 +0000 Subject: [PATCH 14/25] costum url map --- gcp/cloud-run-v2/main.tf | 35 ++++++++++++++++++++++++++++++++++- gcp/cloud-run-v2/outputs.tf | 5 ----- gcp/cloud-run-v2/variables.tf | 23 ++++++++++++++++------- 3 files changed, 50 insertions(+), 13 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index a882776..dba5aa0 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -210,7 +210,7 @@ module "lb-http" { random_certificate_suffix = true url_map = var.url_map - create_url_map = var.create_url_map + create_url_map = var.url_map == null ? true : false backends = merge( { @@ -236,6 +236,39 @@ module "lb-http" { ) } +resource "google_compute_url_map" "custom_url_map_https" { + count = var.enable_custom_domain && var.url_map != null ? 1 : 0 + name = "${var.name}-https-urlmap" + description = "Custom URL map for Cloud Run service" + default_service = module.lb-http[0].backend_services["default"].self_link + + host_rule { + hosts = [local.domain] + path_matcher = "allpaths" + } + path_matcher { + name = "allpaths" + default_service = module.lb-http[0].backend_services["default"].self_link + dynamic "path_rule" { + for_each = var.path_rules + content { + paths = each.value.paths != null ? [each.value.paths] : ["/*"] + service = each.value.service_name != null ? module.lb-http[0].backend_services["${each.value.service_name}"].self_link : module.lb-http[0].backend_services["default"].self_link + route_action { + url_rewrite { + path_prefix_rewrite = each.value.route_action.url_rewrite.path_prefix_rewrite != null ? each.value.route_action.url_rewrite.path_prefix_rewrite : null + } + } + } + } + } + test { + service = module.lb-http[0].backend_services["default"].self_link + host = local.domain + path = "/=" + } +} + resource "google_eventarc_trigger" "default" { for_each = { for i, trigger in var.eventarc_triggers : i => trigger } diff --git a/gcp/cloud-run-v2/outputs.tf b/gcp/cloud-run-v2/outputs.tf index 08130a6..5ddca76 100644 --- a/gcp/cloud-run-v2/outputs.tf +++ b/gcp/cloud-run-v2/outputs.tf @@ -12,8 +12,3 @@ output "external_ip" { description = "value" value = length(module.lb-http) > 0 ? module.lb-http[0].external_ip : null } - -output "backends_access" { - description = "" - value = length(module.lb-http) > 0 ? module.lb-http[0].backend_services : null -} diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index 9f13687..753595c 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -302,21 +302,30 @@ variable "url_map" { default = null } -variable "create_url_map" { - description = "Create a URL map for the load balancer" - type = bool - default = true -} variable "additional_backend_services" { description = "Additional backend services to be used in the load balancer" - type = map(object({ + type = map(object({ group = string - cloud_armor = bool + cloud_armor = bool })) default = {} } +variable "path_rules" { + description = "Custon path rules for the load balancer" + type = map(object({ + paths = string + service_name = string + route_action = map(object({ + url_rewrite = map(object({ + path_prefix_rewrite = string + })) + })) + })) + default = null +} + variable "startup_cpu_boost" { description = "CPU boost for the Cloud Run container" type = bool From aaf7316cb9cedd0b86573365600ae1762e57a176 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 20:08:57 +0000 Subject: [PATCH 15/25] list type --- gcp/cloud-run-v2/variables.tf | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index 753595c..7b35176 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -314,15 +314,15 @@ variable "additional_backend_services" { variable "path_rules" { description = "Custon path rules for the load balancer" - type = map(object({ - paths = string - service_name = string - route_action = map(object({ - url_rewrite = map(object({ - path_prefix_rewrite = string - })) +type = list(object({ + paths = list(string) + service = string + route_action = optional(object({ + url_rewrite = optional(object({ + path_prefix_rewrite = string + })) })) - })) +})) default = null } From ae9899dd5b7c1c94e4bd39f30dbb0d5bb74231b4 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 20:15:09 +0000 Subject: [PATCH 16/25] create_url_map var --- gcp/cloud-run-v2/main.tf | 6 +++--- gcp/cloud-run-v2/variables.tf | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index dba5aa0..1b37fa7 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -209,8 +209,8 @@ module "lb-http" { https_redirect = true # Enable HTTPS redirect random_certificate_suffix = true - url_map = var.url_map - create_url_map = var.url_map == null ? true : false + url_map = google_compute_url_map.https.self_link + create_url_map = var.create_url_map backends = merge( { @@ -237,7 +237,7 @@ module "lb-http" { } resource "google_compute_url_map" "custom_url_map_https" { - count = var.enable_custom_domain && var.url_map != null ? 1 : 0 + count = var.create_url_map == false ? 1 : 0 name = "${var.name}-https-urlmap" description = "Custom URL map for Cloud Run service" default_service = module.lb-http[0].backend_services["default"].self_link diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index 7b35176..ae5e4cd 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -296,10 +296,10 @@ variable "enable_custom_domain" { default = true } -variable "url_map" { - description = "URL map to be used in the load balancer" - type = string - default = null +variable "create_url_map" { + description = "Create a URL map for the load balancer" + type = bool + default = true } From cce2b192f1a9dccea84e83382fff1b2976a1634a Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 20:17:04 +0000 Subject: [PATCH 17/25] custom_url_map_https --- gcp/cloud-run-v2/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index 1b37fa7..e4271d7 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -209,7 +209,7 @@ module "lb-http" { https_redirect = true # Enable HTTPS redirect random_certificate_suffix = true - url_map = google_compute_url_map.https.self_link + url_map = google_compute_url_map.custom_url_map_https.self_link create_url_map = var.create_url_map backends = merge( From 133262e69d0abc642c2cda6568fb21d60323fc80 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 20:19:29 +0000 Subject: [PATCH 18/25] custom_url_map_https --- gcp/cloud-run-v2/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index e4271d7..18f02c8 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -209,7 +209,7 @@ module "lb-http" { https_redirect = true # Enable HTTPS redirect random_certificate_suffix = true - url_map = google_compute_url_map.custom_url_map_https.self_link + url_map = var.create_url_map == false? google_compute_url_map.custom_url_map_https.self_link : null create_url_map = var.create_url_map backends = merge( From b0ff28ed2f5c84dc7eb1e7b31cc19f6d0b78565a Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 20:22:24 +0000 Subject: [PATCH 19/25] count index --- gcp/cloud-run-v2/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index 18f02c8..f5a5dd0 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -209,7 +209,7 @@ module "lb-http" { https_redirect = true # Enable HTTPS redirect random_certificate_suffix = true - url_map = var.create_url_map == false? google_compute_url_map.custom_url_map_https.self_link : null + url_map = var.create_url_map == false? google_compute_url_map.custom_url_map_https[count.index].self_link : null create_url_map = var.create_url_map backends = merge( From ad7a17e848ffb0fdce7e2804b04e86d243b7d528 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 20:30:10 +0000 Subject: [PATCH 20/25] path_rules for each --- gcp/cloud-run-v2/main.tf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index f5a5dd0..d91410c 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -252,11 +252,11 @@ resource "google_compute_url_map" "custom_url_map_https" { dynamic "path_rule" { for_each = var.path_rules content { - paths = each.value.paths != null ? [each.value.paths] : ["/*"] - service = each.value.service_name != null ? module.lb-http[0].backend_services["${each.value.service_name}"].self_link : module.lb-http[0].backend_services["default"].self_link + paths = path_rules.value.paths != null ? [path_rules.value.paths] : ["/*"] + service = path_rules.value.service_name != null ? module.lb-http[0].backend_services["${path_rules.value.service_name}"].self_link : module.lb-http[0].backend_services["default"].self_link route_action { url_rewrite { - path_prefix_rewrite = each.value.route_action.url_rewrite.path_prefix_rewrite != null ? each.value.route_action.url_rewrite.path_prefix_rewrite : null + path_prefix_rewrite = path_rules.value.route_action.url_rewrite.path_prefix_rewrite != null ? path_rules.value.route_action.url_rewrite.path_prefix_rewrite : null } } } From b2254e353a545c069dcfb157b616eb06addef6da Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 20:36:11 +0000 Subject: [PATCH 21/25] path_rules for each --- gcp/cloud-run-v2/main.tf | 6 +++--- gcp/cloud-run-v2/variables.tf | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index d91410c..3430a64 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -252,11 +252,11 @@ resource "google_compute_url_map" "custom_url_map_https" { dynamic "path_rule" { for_each = var.path_rules content { - paths = path_rules.value.paths != null ? [path_rules.value.paths] : ["/*"] - service = path_rules.value.service_name != null ? module.lb-http[0].backend_services["${path_rules.value.service_name}"].self_link : module.lb-http[0].backend_services["default"].self_link + paths = path_rule.value.paths != null ? [path_rule.value.paths] : ["/*"] + service = path_rule.value.service_name != null ? module.lb-http[0].backend_services["${path_rule.value.service_name}"].self_link : module.lb-http[0].backend_services["default"].self_link route_action { url_rewrite { - path_prefix_rewrite = path_rules.value.route_action.url_rewrite.path_prefix_rewrite != null ? path_rules.value.route_action.url_rewrite.path_prefix_rewrite : null + path_prefix_rewrite = path_rule.value.route_action.url_rewrite.path_prefix_rewrite != null ? path_rule.value.route_action.url_rewrite.path_prefix_rewrite : null } } } diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index ae5e4cd..17385c7 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -297,7 +297,7 @@ variable "enable_custom_domain" { } variable "create_url_map" { - description = "Create a URL map for the load balancer" + description = "Create a URL map for the load balancer. If false, the URL map must be created manually" type = bool default = true } From 6d8197d107729df69a25e3d8514748b612f9b06b Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 20:43:20 +0000 Subject: [PATCH 22/25] wrong types --- gcp/cloud-run-v2/variables.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index 17385c7..8e554fe 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -315,8 +315,8 @@ variable "additional_backend_services" { variable "path_rules" { description = "Custon path rules for the load balancer" type = list(object({ - paths = list(string) - service = string + paths = string + service_name = string route_action = optional(object({ url_rewrite = optional(object({ path_prefix_rewrite = string From ed73e3084da4e83a1f23e80069ce01762b89e8ad Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 20:46:21 +0000 Subject: [PATCH 23/25] [] paths --- gcp/cloud-run-v2/main.tf | 2 +- gcp/cloud-run-v2/variables.tf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index 3430a64..0d8eb29 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -252,7 +252,7 @@ resource "google_compute_url_map" "custom_url_map_https" { dynamic "path_rule" { for_each = var.path_rules content { - paths = path_rule.value.paths != null ? [path_rule.value.paths] : ["/*"] + paths = length(path_rule.value.paths) > 0 ? path_rule.value.paths : ["/*"] service = path_rule.value.service_name != null ? module.lb-http[0].backend_services["${path_rule.value.service_name}"].self_link : module.lb-http[0].backend_services["default"].self_link route_action { url_rewrite { diff --git a/gcp/cloud-run-v2/variables.tf b/gcp/cloud-run-v2/variables.tf index 8e554fe..f7a775b 100644 --- a/gcp/cloud-run-v2/variables.tf +++ b/gcp/cloud-run-v2/variables.tf @@ -315,7 +315,7 @@ variable "additional_backend_services" { variable "path_rules" { description = "Custon path rules for the load balancer" type = list(object({ - paths = string + paths = list(string) service_name = string route_action = optional(object({ url_rewrite = optional(object({ From b501a8f6d0c1c35d4dc0bc660ec229ce01438a30 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Fri, 9 Feb 2024 21:16:32 +0000 Subject: [PATCH 24/25] route action --- gcp/cloud-run-v2/main.tf | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index 0d8eb29..34a73d9 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -254,10 +254,14 @@ resource "google_compute_url_map" "custom_url_map_https" { content { paths = length(path_rule.value.paths) > 0 ? path_rule.value.paths : ["/*"] service = path_rule.value.service_name != null ? module.lb-http[0].backend_services["${path_rule.value.service_name}"].self_link : module.lb-http[0].backend_services["default"].self_link - route_action { - url_rewrite { - path_prefix_rewrite = path_rule.value.route_action.url_rewrite.path_prefix_rewrite != null ? path_rule.value.route_action.url_rewrite.path_prefix_rewrite : null + dynamic "route_action" { + for_each = path_rule.value.route_action != null ? [1] : [] + content { + url_rewrite { + path_prefix_rewrite = path_rule.value.route_action.url_rewrite.path_prefix_rewrite != null ? path_rule.value.route_action.url_rewrite.path_prefix_rewrite : null + } } + } } } From 62b175a4ac7c37b366818024f5ac915fa0685615 Mon Sep 17 00:00:00 2001 From: Aurora Del Rio Date: Wed, 14 Feb 2024 15:13:24 +0000 Subject: [PATCH 25/25] removing test --- gcp/cloud-run-v2/main.tf | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/gcp/cloud-run-v2/main.tf b/gcp/cloud-run-v2/main.tf index 34a73d9..0f05eae 100644 --- a/gcp/cloud-run-v2/main.tf +++ b/gcp/cloud-run-v2/main.tf @@ -236,6 +236,7 @@ module "lb-http" { ) } +# Custom URL maps for https load balancer resource "google_compute_url_map" "custom_url_map_https" { count = var.create_url_map == false ? 1 : 0 name = "${var.name}-https-urlmap" @@ -266,11 +267,6 @@ resource "google_compute_url_map" "custom_url_map_https" { } } } - test { - service = module.lb-http[0].backend_services["default"].self_link - host = local.domain - path = "/=" - } } resource "google_eventarc_trigger" "default" {