Skip to content

Commit 256952e

Browse files
committed
create worker service with lb
1 parent ca63276 commit 256952e

File tree

1 file changed

+63
-19
lines changed
  • terraform/modules/deployment

1 file changed

+63
-19
lines changed

terraform/modules/deployment/main.tf

Lines changed: 63 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,32 +42,33 @@ module "migrate" {
4242
cloudrun_service_account_email = module.iam.cloudrun_service_account_email
4343
}
4444

45-
module "webapp" {
46-
source = "../service"
47-
48-
name = "webapp"
49-
project = var.project
50-
environment = var.environment
51-
region = var.region
52-
image = var.webapp_image
53-
database_name = var.database_name
54-
55-
database_password_secret_id = module.database.password_secret_id
56-
database_instance_connection_name = module.database.instance_connection_name
57-
database_instance_private_ip = module.database.instance_private_ip
58-
network_id = module.network.network_id
59-
subnetwork_id = module.network.subnetwork_id
60-
cloudrun_service_account_email = module.iam.cloudrun_service_account_email
45+
locals {
46+
services = [
47+
{
48+
name = "webapp"
49+
image = var.webapp_image
50+
},
51+
{
52+
name = "frontend"
53+
image = var.frontend_image
54+
},
55+
{
56+
name = "worker"
57+
image = var.webapp_image
58+
}
59+
]
6160
}
6261

63-
module "frontend" {
62+
module "services" {
63+
for_each = { for s in local.services : s.name => s }
64+
6465
source = "../service"
6566

66-
name = "frontend"
67+
name = each.value.name
6768
project = var.project
6869
environment = var.environment
6970
region = var.region
70-
image = var.frontend_image
71+
image = each.value.image
7172
database_name = var.database_name
7273

7374
database_password_secret_id = module.database.password_secret_id
@@ -86,3 +87,46 @@ module "load_balancer" {
8687
region = var.region
8788
domain = var.domain
8889
}
90+
91+
resource "google_compute_global_address" "worker_lb_ip" {
92+
name = "${var.environment}-tf-cr-lb-1-address"
93+
address_type = "EXTERNAL"
94+
}
95+
96+
# Create a load balancer for the worker service, separate from the frontend and webapp services
97+
module "worker_lb" {
98+
source = "terraform-google-modules/lb-http/google//modules/serverless_negs"
99+
version = "~> 12.0"
100+
101+
project = var.project
102+
name = "${var.environment}-tf-cr-lb-1"
103+
104+
address = google_compute_global_address.worker_lb_ip.address
105+
create_address = false
106+
ssl = true
107+
managed_ssl_certificate_domains = [var.domain]
108+
https_redirect = true
109+
110+
backends = {
111+
"${var.environment}-worker" = {
112+
description = "Cloud Run worker"
113+
groups = []
114+
serverless_neg_backends = [{
115+
region : var.region,
116+
type : "cloud-run",
117+
service : {
118+
name : "${var.environment}-worker",
119+
}
120+
}]
121+
122+
enable_cdn = false
123+
124+
iap_config = {
125+
enable = true
126+
}
127+
log_config = {
128+
enable = false
129+
}
130+
}
131+
}
132+
}

0 commit comments

Comments
 (0)