@@ -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