From c8e59cb29c13c7534e4ffb1c30dcb6cd2f3df5d4 Mon Sep 17 00:00:00 2001 From: Piotr Tokaj Date: Sun, 19 Apr 2026 12:21:41 +0200 Subject: [PATCH 1/2] feat(cloudsql-instance): allow overriding tier per read replica Adds an optional "tier" field to the replicas map (default unset, in which case the primary's var.tier is used via coalesce). This lets users size read replicas independently of the primary - useful for cost optimisation when replicas serve lighter analytics workloads, or for validating a bigger/smaller machine type on a replica before resizing the primary. Made-with: Cursor --- modules/cloudsql-instance/main.tf | 2 +- modules/cloudsql-instance/variables.tf | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/cloudsql-instance/main.tf b/modules/cloudsql-instance/main.tf index e64ee383b..b5492bc8b 100644 --- a/modules/cloudsql-instance/main.tf +++ b/modules/cloudsql-instance/main.tf @@ -215,7 +215,7 @@ resource "google_sql_database_instance" "replicas" { master_instance_name = google_sql_database_instance.primary.name settings { - tier = var.tier + tier = coalesce(each.value.tier, var.tier) edition = var.edition deletion_protection_enabled = var.gcp_deletion_protection disk_autoresize = var.disk_size == null diff --git a/modules/cloudsql-instance/variables.tf b/modules/cloudsql-instance/variables.tf index 87616b233..c26178456 100644 --- a/modules/cloudsql-instance/variables.tf +++ b/modules/cloudsql-instance/variables.tf @@ -239,10 +239,11 @@ variable "region" { } variable "replicas" { - description = "Map of NAME=> {REGION, KMS_KEY} for additional read replicas. Set to null to disable replica creation." + description = "Map of NAME=> {REGION, KMS_KEY, TIER} for additional read replicas. Tier defaults to the primary instance tier when unset. Set to null to disable replica creation." type = map(object({ region = string encryption_key_name = optional(string) + tier = optional(string) })) default = {} nullable = false From b23322ea84e293c60ce5573b117f30cd3c19d943 Mon Sep 17 00:00:00 2001 From: Piotr Tokaj Date: Fri, 15 May 2026 12:03:16 +0200 Subject: [PATCH 2/2] Disallow null tier --- modules/cloudsql-instance/variables.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/cloudsql-instance/variables.tf b/modules/cloudsql-instance/variables.tf index c26178456..803d59cdb 100644 --- a/modules/cloudsql-instance/variables.tf +++ b/modules/cloudsql-instance/variables.tf @@ -288,6 +288,7 @@ variable "terraform_deletion_protection" { variable "tier" { description = "The machine type to use for the instances." type = string + nullable = false } variable "time_zone" {