Skip to content

Commit c127a90

Browse files
committed
Explicitly set update_policy on GCE instance group managers
1 parent 5a25815 commit c127a90

File tree

12 files changed

+108
-0
lines changed

12 files changed

+108
-0
lines changed

pkg/model/gcemodel/autoscalinggroup.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@ func (b *AutoscalingGroupModelBuilder) Build(c *fi.CloudupModelBuilderContext) e
313313
Lifecycle: b.Lifecycle,
314314
Zone: s(zone),
315315
TargetSize: fi.PtrTo(int64(targetSize)),
316+
UpdatePolicy: &gcetasks.UpdatePolicy{Type: "OPPORTUNISTIC"},
316317
BaseInstanceName: s(ig.ObjectMeta.Name),
317318
InstanceTemplate: instanceTemplate,
318319
ListManagedInstancesResults: "PAGINATED",

tests/integration/update_cluster/ha_gce/kubernetes.tf

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,9 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-ha-gce-exa
497497
list_managed_instances_results = "PAGINATED"
498498
name = "a-master-us-test1-a-ha-gce-example-com"
499499
target_size = 1
500+
update_policy {
501+
type = "OPPORTUNISTIC"
502+
}
500503
version {
501504
instance_template = google_compute_instance_template.master-us-test1-a-ha-gce-example-com.self_link
502505
}
@@ -508,6 +511,9 @@ resource "google_compute_instance_group_manager" "a-nodes-ha-gce-example-com" {
508511
list_managed_instances_results = "PAGINATED"
509512
name = "a-nodes-ha-gce-example-com"
510513
target_size = 1
514+
update_policy {
515+
type = "OPPORTUNISTIC"
516+
}
511517
version {
512518
instance_template = google_compute_instance_template.nodes-ha-gce-example-com.self_link
513519
}
@@ -519,6 +525,9 @@ resource "google_compute_instance_group_manager" "b-master-us-test1-b-ha-gce-exa
519525
list_managed_instances_results = "PAGINATED"
520526
name = "b-master-us-test1-b-ha-gce-example-com"
521527
target_size = 1
528+
update_policy {
529+
type = "OPPORTUNISTIC"
530+
}
522531
version {
523532
instance_template = google_compute_instance_template.master-us-test1-b-ha-gce-example-com.self_link
524533
}
@@ -530,6 +539,9 @@ resource "google_compute_instance_group_manager" "b-nodes-ha-gce-example-com" {
530539
list_managed_instances_results = "PAGINATED"
531540
name = "b-nodes-ha-gce-example-com"
532541
target_size = 1
542+
update_policy {
543+
type = "OPPORTUNISTIC"
544+
}
533545
version {
534546
instance_template = google_compute_instance_template.nodes-ha-gce-example-com.self_link
535547
}
@@ -541,6 +553,9 @@ resource "google_compute_instance_group_manager" "c-master-us-test1-c-ha-gce-exa
541553
list_managed_instances_results = "PAGINATED"
542554
name = "c-master-us-test1-c-ha-gce-example-com"
543555
target_size = 1
556+
update_policy {
557+
type = "OPPORTUNISTIC"
558+
}
544559
version {
545560
instance_template = google_compute_instance_template.master-us-test1-c-ha-gce-example-com.self_link
546561
}
@@ -552,6 +567,9 @@ resource "google_compute_instance_group_manager" "c-nodes-ha-gce-example-com" {
552567
list_managed_instances_results = "PAGINATED"
553568
name = "c-nodes-ha-gce-example-com"
554569
target_size = 0
570+
update_policy {
571+
type = "OPPORTUNISTIC"
572+
}
555573
version {
556574
instance_template = google_compute_instance_template.nodes-ha-gce-example-com.self_link
557575
}

tests/integration/update_cluster/many-addons-gce/kubernetes.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,9 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-ex
425425
list_managed_instances_results = "PAGINATED"
426426
name = "a-master-us-test1-a-minimal-example-com"
427427
target_size = 1
428+
update_policy {
429+
type = "OPPORTUNISTIC"
430+
}
428431
version {
429432
instance_template = google_compute_instance_template.master-us-test1-a-minimal-example-com.self_link
430433
}
@@ -436,6 +439,9 @@ resource "google_compute_instance_group_manager" "a-nodes-minimal-example-com" {
436439
list_managed_instances_results = "PAGINATED"
437440
name = "a-nodes-minimal-example-com"
438441
target_size = 1
442+
update_policy {
443+
type = "OPPORTUNISTIC"
444+
}
439445
version {
440446
instance_template = google_compute_instance_template.nodes-minimal-example-com.self_link
441447
}

tests/integration/update_cluster/minimal_gce/kubernetes.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,9 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
401401
list_managed_instances_results = "PAGINATED"
402402
name = "a-master-us-test1-a-minimal-gce-example-com"
403403
target_size = 1
404+
update_policy {
405+
type = "OPPORTUNISTIC"
406+
}
404407
version {
405408
instance_template = google_compute_instance_template.master-us-test1-a-minimal-gce-example-com.self_link
406409
}
@@ -412,6 +415,9 @@ resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-example-co
412415
list_managed_instances_results = "PAGINATED"
413416
name = "a-nodes-minimal-gce-example-com"
414417
target_size = 2
418+
update_policy {
419+
type = "OPPORTUNISTIC"
420+
}
415421
version {
416422
instance_template = google_compute_instance_template.nodes-minimal-gce-example-com.self_link
417423
}

tests/integration/update_cluster/minimal_gce_dns-none/kubernetes.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,9 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
465465
list_managed_instances_results = "PAGINATED"
466466
name = "a-master-us-test1-a-minimal-gce-example-com"
467467
target_size = 1
468+
update_policy {
469+
type = "OPPORTUNISTIC"
470+
}
468471
version {
469472
instance_template = google_compute_instance_template.master-us-test1-a-minimal-gce-example-com.self_link
470473
}
@@ -476,6 +479,9 @@ resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-example-co
476479
list_managed_instances_results = "PAGINATED"
477480
name = "a-nodes-minimal-gce-example-com"
478481
target_size = 2
482+
update_policy {
483+
type = "OPPORTUNISTIC"
484+
}
479485
version {
480486
instance_template = google_compute_instance_template.nodes-minimal-gce-example-com.self_link
481487
}

tests/integration/update_cluster/minimal_gce_ilb/kubernetes.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,9 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
434434
list_managed_instances_results = "PAGINATED"
435435
name = "a-master-us-test1-a-minimal-gce-ilb-example-com"
436436
target_size = 1
437+
update_policy {
438+
type = "OPPORTUNISTIC"
439+
}
437440
version {
438441
instance_template = google_compute_instance_template.master-us-test1-a-minimal-gce-ilb-example-com.self_link
439442
}
@@ -445,6 +448,9 @@ resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-ilb-exampl
445448
list_managed_instances_results = "PAGINATED"
446449
name = "a-nodes-minimal-gce-ilb-example-com"
447450
target_size = 2
451+
update_policy {
452+
type = "OPPORTUNISTIC"
453+
}
448454
version {
449455
instance_template = google_compute_instance_template.nodes-minimal-gce-ilb-example-com.self_link
450456
}

tests/integration/update_cluster/minimal_gce_ilb_longclustername/kubernetes.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,9 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
434434
list_managed_instances_results = "PAGINATED"
435435
name = "a-master-us-test1-a-minimal-gce-with-a-very-very-very-ve-j0fh8f"
436436
target_size = 1
437+
update_policy {
438+
type = "OPPORTUNISTIC"
439+
}
437440
version {
438441
instance_template = google_compute_instance_template.master-us-test1-a-minimal-gce-with-a-very-very-very-very-very-long-name-example-com.self_link
439442
}
@@ -445,6 +448,9 @@ resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-with-a-ver
445448
list_managed_instances_results = "PAGINATED"
446449
name = "a-nodes-minimal-gce-with-a-very-very-very-very-very-long-qk78uj"
447450
target_size = 2
451+
update_policy {
452+
type = "OPPORTUNISTIC"
453+
}
448454
version {
449455
instance_template = google_compute_instance_template.nodes-minimal-gce-with-a-very-very-very-very-very-long-name-example-com.self_link
450456
}

tests/integration/update_cluster/minimal_gce_longclustername/kubernetes.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,9 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
401401
list_managed_instances_results = "PAGINATED"
402402
name = "a-master-us-test1-a-minimal-gce-with-a-very-very-very-ve-j0fh8f"
403403
target_size = 1
404+
update_policy {
405+
type = "OPPORTUNISTIC"
406+
}
404407
version {
405408
instance_template = google_compute_instance_template.master-us-test1-a-minimal-gce-with-a-very-very-very-very-very-long-name-example-com.self_link
406409
}
@@ -412,6 +415,9 @@ resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-with-a-ver
412415
list_managed_instances_results = "PAGINATED"
413416
name = "a-nodes-minimal-gce-with-a-very-very-very-very-very-long-qk78uj"
414417
target_size = 2
418+
update_policy {
419+
type = "OPPORTUNISTIC"
420+
}
415421
version {
416422
instance_template = google_compute_instance_template.nodes-minimal-gce-with-a-very-very-very-very-very-long-name-example-com.self_link
417423
}

tests/integration/update_cluster/minimal_gce_plb/kubernetes.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,9 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
458458
name = "a-master-us-test1-a-minimal-gce-plb-example-com"
459459
target_pools = [google_compute_target_pool.api-minimal-gce-plb-example-com.self_link]
460460
target_size = 1
461+
update_policy {
462+
type = "OPPORTUNISTIC"
463+
}
461464
version {
462465
instance_template = google_compute_instance_template.master-us-test1-a-minimal-gce-plb-example-com.self_link
463466
}
@@ -469,6 +472,9 @@ resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-plb-exampl
469472
list_managed_instances_results = "PAGINATED"
470473
name = "a-nodes-minimal-gce-plb-example-com"
471474
target_size = 2
475+
update_policy {
476+
type = "OPPORTUNISTIC"
477+
}
472478
version {
473479
instance_template = google_compute_instance_template.nodes-minimal-gce-plb-example-com.self_link
474480
}

tests/integration/update_cluster/minimal_gce_private/kubernetes.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,9 @@ resource "google_compute_instance_group_manager" "a-master-us-test1-a-minimal-gc
401401
list_managed_instances_results = "PAGINATED"
402402
name = "a-master-us-test1-a-minimal-gce-private-example-com"
403403
target_size = 1
404+
update_policy {
405+
type = "OPPORTUNISTIC"
406+
}
404407
version {
405408
instance_template = google_compute_instance_template.master-us-test1-a-minimal-gce-private-example-com.self_link
406409
}
@@ -412,6 +415,9 @@ resource "google_compute_instance_group_manager" "a-nodes-minimal-gce-private-ex
412415
list_managed_instances_results = "PAGINATED"
413416
name = "a-nodes-minimal-gce-private-example-com"
414417
target_size = 2
418+
update_policy {
419+
type = "OPPORTUNISTIC"
420+
}
415421
version {
416422
instance_template = google_compute_instance_template.nodes-minimal-gce-private-example-com.self_link
417423
}

upup/pkg/fi/cloudup/gcetasks/instancegroupmanager.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ type InstanceGroupManager struct {
3737
InstanceTemplate *InstanceTemplate
3838
ListManagedInstancesResults string
3939
TargetSize *int64
40+
UpdatePolicy *UpdatePolicy
4041

4142
TargetPools []*TargetPool
4243
}
@@ -63,6 +64,7 @@ func (e *InstanceGroupManager) Find(c *fi.CloudupContext) (*InstanceGroupManager
6364
actual.Zone = fi.PtrTo(lastComponent(r.Zone))
6465
actual.BaseInstanceName = &r.BaseInstanceName
6566
actual.TargetSize = &r.TargetSize
67+
actual.UpdatePolicy = &UpdatePolicy{Type: r.UpdatePolicy.Type}
6668
actual.InstanceTemplate = &InstanceTemplate{ID: fi.PtrTo(lastComponent(r.InstanceTemplate))}
6769
actual.ListManagedInstancesResults = r.ListManagedInstancesResults
6870

@@ -100,6 +102,7 @@ func (_ *InstanceGroupManager) RenderGCE(t *gce.GCEAPITarget, a, e, changes *Ins
100102
Zone: *e.Zone,
101103
BaseInstanceName: *e.BaseInstanceName,
102104
TargetSize: *e.TargetSize,
105+
UpdatePolicy: &compute.InstanceGroupManagerUpdatePolicy{Type: e.UpdatePolicy.Type},
103106
InstanceTemplate: instanceTemplateURL,
104107
ListManagedInstancesResults: e.ListManagedInstancesResults,
105108
}
@@ -181,9 +184,14 @@ type terraformInstanceGroupManager struct {
181184
ListManagedInstancesResults string `cty:"list_managed_instances_results"`
182185
Version *terraformVersion `cty:"version"`
183186
TargetSize *int64 `cty:"target_size"`
187+
UpdatePolicy *terraformUpdatePolicy `cty:"update_policy"`
184188
TargetPools []*terraformWriter.Literal `cty:"target_pools"`
185189
}
186190

191+
type terraformUpdatePolicy struct {
192+
Type string `cty:"type"`
193+
}
194+
187195
type terraformVersion struct {
188196
InstanceTemplate *terraformWriter.Literal `cty:"instance_template"`
189197
}
@@ -196,6 +204,9 @@ func (_ *InstanceGroupManager) RenderTerraform(t *terraform.TerraformTarget, a,
196204
TargetSize: e.TargetSize,
197205
ListManagedInstancesResults: e.ListManagedInstancesResults,
198206
}
207+
tf.UpdatePolicy = &terraformUpdatePolicy{
208+
Type: e.UpdatePolicy.Type,
209+
}
199210
tf.Version = &terraformVersion{
200211
InstanceTemplate: e.InstanceTemplate.TerraformLink(),
201212
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
Copyright 2025 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package gcetasks
18+
19+
import "k8s.io/kops/upup/pkg/fi"
20+
21+
// UpdatePolicy represents a GCE instance group manager UpdatePolicy
22+
type UpdatePolicy struct {
23+
Type string
24+
}
25+
26+
var _ fi.CloudupHasDependencies = &UpdatePolicy{}
27+
28+
func (_ *UpdatePolicy) GetDependencies(tasks map[string]fi.CloudupTask) []fi.CloudupTask {
29+
return nil
30+
}

0 commit comments

Comments
 (0)