GCE: do not reset MIG target size on cluster updates

This commit is contained in:
Flo Piboubès 2025-06-08 11:10:17 +02:00
parent d19b006c72
commit 4763344951
10 changed files with 93 additions and 23 deletions

View File

@ -493,7 +493,10 @@ resource "google_compute_firewall" "ssh-external-to-node-ipv6-ha-gce-example-com
}
resource "google_compute_instance_group_manager" "a-master-us-test1-a-ha-gce-example-com" {
base_instance_name = "master-us-test1-a"
base_instance_name = "master-us-test1-a"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-master-us-test1-a-ha-gce-example-com"
target_size = 1
@ -508,7 +511,10 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-ha-gce-exa
}
resource "google_compute_instance_group_manager" "a-nodes-ha-gce-example-com" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-nodes-ha-gce-example-com"
target_size = 1
@ -523,7 +529,10 @@ resource "google_compute_instance_group_manager" "a-nodes-ha-gce-example-com" {
}
resource "google_compute_instance_group_manager" "b-master-us-test1-b-ha-gce-example-com" {
base_instance_name = "master-us-test1-b"
base_instance_name = "master-us-test1-b"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "b-master-us-test1-b-ha-gce-example-com"
target_size = 1
@ -538,7 +547,10 @@ resource "google_compute_instance_group_manager" "b-master-us-test1-b-ha-gce-exa
}
resource "google_compute_instance_group_manager" "b-nodes-ha-gce-example-com" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "b-nodes-ha-gce-example-com"
target_size = 1
@ -553,7 +565,10 @@ resource "google_compute_instance_group_manager" "b-nodes-ha-gce-example-com" {
}
resource "google_compute_instance_group_manager" "c-master-us-test1-c-ha-gce-example-com" {
base_instance_name = "master-us-test1-c"
base_instance_name = "master-us-test1-c"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "c-master-us-test1-c-ha-gce-example-com"
target_size = 1
@ -568,7 +583,10 @@ resource "google_compute_instance_group_manager" "c-master-us-test1-c-ha-gce-exa
}
resource "google_compute_instance_group_manager" "c-nodes-ha-gce-example-com" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "c-nodes-ha-gce-example-com"
target_size = 0

View File

@ -421,7 +421,10 @@ resource "google_compute_firewall" "ssh-external-to-node-minimal-example-com" {
}
resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-example-com" {
base_instance_name = "master-us-test1-a"
base_instance_name = "master-us-test1-a"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-master-us-test1-a-minimal-example-com"
target_size = 1
@ -436,7 +439,10 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-ex
}
resource "google_compute_instance_group_manager" "a-nodes-minimal-example-com" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-nodes-minimal-example-com"
target_size = 1

View File

@ -397,7 +397,10 @@ resource "google_compute_firewall" "ssh-external-to-node-minimal-gce-example-com
}
resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gce-example-com" {
base_instance_name = "master-us-test1-a"
base_instance_name = "master-us-test1-a"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-master-us-test1-a-minimal-gce-example-com"
target_size = 1
@ -412,7 +415,10 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
}
resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-example-com" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-nodes-minimal-gce-example-com"
target_size = 2

View File

@ -461,7 +461,10 @@ resource "google_compute_forwarding_rule" "kops-controller-us-test1-minimal-gce-
}
resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gce-example-com" {
base_instance_name = "master-us-test1-a"
base_instance_name = "master-us-test1-a"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-master-us-test1-a-minimal-gce-example-com"
target_size = 1
@ -476,7 +479,10 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
}
resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-example-com" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-nodes-minimal-gce-example-com"
target_size = 2

View File

@ -430,7 +430,10 @@ resource "google_compute_forwarding_rule" "api-us-test1-minimal-gce-ilb-example-
}
resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gce-ilb-example-com" {
base_instance_name = "master-us-test1-a"
base_instance_name = "master-us-test1-a"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-master-us-test1-a-minimal-gce-ilb-example-com"
target_size = 1
@ -445,7 +448,10 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
}
resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-ilb-example-com" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-nodes-minimal-gce-ilb-example-com"
target_size = 2

View File

@ -430,7 +430,10 @@ resource "google_compute_forwarding_rule" "api-us-test1-minimal-gce-with-a-very-
}
resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gce-with-a-very-very-very-ve-j0fh8f" {
base_instance_name = "master-us-test1-a"
base_instance_name = "master-us-test1-a"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-master-us-test1-a-minimal-gce-with-a-very-very-very-ve-j0fh8f"
target_size = 1
@ -445,7 +448,10 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
}
resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-with-a-very-very-very-very-very-long-qk78uj" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-nodes-minimal-gce-with-a-very-very-very-very-very-long-qk78uj"
target_size = 2

View File

@ -397,7 +397,10 @@ resource "google_compute_firewall" "ssh-external-to-node-minimal-gce-with-a-very
}
resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gce-with-a-very-very-very-ve-j0fh8f" {
base_instance_name = "master-us-test1-a"
base_instance_name = "master-us-test1-a"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-master-us-test1-a-minimal-gce-with-a-very-very-very-ve-j0fh8f"
target_size = 1
@ -412,7 +415,10 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
}
resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-with-a-very-very-very-very-very-long-qk78uj" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-nodes-minimal-gce-with-a-very-very-very-very-very-long-qk78uj"
target_size = 2

View File

@ -453,7 +453,10 @@ resource "google_compute_http_health_check" "api-minimal-gce-plb-example-com" {
}
resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gce-plb-example-com" {
base_instance_name = "master-us-test1-a"
base_instance_name = "master-us-test1-a"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-master-us-test1-a-minimal-gce-plb-example-com"
target_pools = [google_compute_target_pool.api-minimal-gce-plb-example-com.self_link]
@ -469,7 +472,10 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
}
resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-plb-example-com" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-nodes-minimal-gce-plb-example-com"
target_size = 2

View File

@ -397,7 +397,10 @@ resource "google_compute_firewall" "ssh-external-to-node-minimal-gce-private-exa
}
resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gce-private-example-com" {
base_instance_name = "master-us-test1-a"
base_instance_name = "master-us-test1-a"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-master-us-test1-a-minimal-gce-private-example-com"
target_size = 1
@ -412,7 +415,10 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
}
resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-private-example-com" {
base_instance_name = "nodes"
base_instance_name = "nodes"
lifecycle {
ignore_changes = [target_size]
}
list_managed_instances_results = "PAGINATED"
name = "a-nodes-minimal-gce-private-example-com"
target_size = 2

View File

@ -63,7 +63,7 @@ func (e *InstanceGroupManager) Find(c *fi.CloudupContext) (*InstanceGroupManager
actual.Name = &r.Name
actual.Zone = fi.PtrTo(lastComponent(r.Zone))
actual.BaseInstanceName = &r.BaseInstanceName
actual.TargetSize = &r.TargetSize
actual.TargetSize = e.TargetSize
actual.InstanceTemplate = &InstanceTemplate{ID: fi.PtrTo(lastComponent(r.InstanceTemplate))}
actual.ListManagedInstancesResults = r.ListManagedInstancesResults
@ -187,6 +187,7 @@ func (_ *InstanceGroupManager) RenderGCE(t *gce.GCEAPITarget, a, e, changes *Ins
}
type terraformInstanceGroupManager struct {
Lifecycle *terraform.Lifecycle `cty:"lifecycle"`
Name *string `cty:"name"`
Zone *string `cty:"zone"`
BaseInstanceName *string `cty:"base_instance_name"`
@ -214,6 +215,9 @@ func (_ *InstanceGroupManager) RenderTerraform(t *terraform.TerraformTarget, a,
TargetSize: e.TargetSize,
ListManagedInstancesResults: e.ListManagedInstancesResults,
}
tf.Lifecycle = &terraform.Lifecycle{
IgnoreChanges: []*terraformWriter.Literal{{String: "target_size"}},
}
if policy := e.UpdatePolicy; policy != nil {
tf.UpdatePolicy = &terraformUpdatePolicy{
MinimalAction: policy.MinimalAction,