diff --git a/pkg/model/gcemodel/api_loadbalancer.go b/pkg/model/gcemodel/api_loadbalancer.go index 4e12f6edab..44d47d7edf 100644 --- a/pkg/model/gcemodel/api_loadbalancer.go +++ b/pkg/model/gcemodel/api_loadbalancer.go @@ -38,13 +38,6 @@ var _ fi.CloudupModelBuilder = &APILoadBalancerBuilder{} // createPublicLB validates the existence of a target pool with the given name, // and creates an IP address and forwarding rule pointing to that target pool. func createPublicLB(b *APILoadBalancerBuilder, c *fi.CloudupModelBuilderContext) error { - // TODO: point target pool to instance group managers, as done in internal LB. - targetPool := &gcetasks.TargetPool{ - Name: s(b.NameForTargetPool("api")), - Lifecycle: b.Lifecycle, - } - c.AddTask(targetPool) - healthCheck := &gcetasks.HTTPHealthcheck{ Name: s(b.NameForHealthcheck("api")), Port: i64(wellknownports.KubeAPIServerHealthCheck), @@ -53,6 +46,14 @@ func createPublicLB(b *APILoadBalancerBuilder, c *fi.CloudupModelBuilderContext) } c.AddTask(healthCheck) + // TODO: point target pool to instance group managers, as done in internal LB. + targetPool := &gcetasks.TargetPool{ + Name: s(b.NameForTargetPool("api")), + HealthCheck: healthCheck, + Lifecycle: b.Lifecycle, + } + c.AddTask(targetPool) + poolHealthCheck := &gcetasks.PoolHealthCheck{ Name: s(b.NameForPoolHealthcheck("api")), Healthcheck: healthCheck, diff --git a/tests/integration/update_cluster/minimal_gce_plb/kubernetes.tf b/tests/integration/update_cluster/minimal_gce_plb/kubernetes.tf index f233e91cf6..44e6271ac4 100644 --- a/tests/integration/update_cluster/minimal_gce_plb/kubernetes.tf +++ b/tests/integration/update_cluster/minimal_gce_plb/kubernetes.tf @@ -565,9 +565,8 @@ resource "google_compute_subnetwork" "us-test1-minimal-gce-plb-example-com" { } resource "google_compute_target_pool" "api-minimal-gce-plb-example-com" { - description = "" - name = "api-minimal-gce-plb-example-com" - session_affinity = "" + health_checks = [google_compute_http_health_check.api-minimal-gce-plb-example-com.self_link] + name = "api-minimal-gce-plb-example-com" } resource "google_project_iam_binding" "serviceaccount-control-plane" { diff --git a/upup/pkg/fi/cloudup/gcetasks/httphealthcheck.go b/upup/pkg/fi/cloudup/gcetasks/httphealthcheck.go index 8af54835eb..63f550779f 100644 --- a/upup/pkg/fi/cloudup/gcetasks/httphealthcheck.go +++ b/upup/pkg/fi/cloudup/gcetasks/httphealthcheck.go @@ -113,6 +113,6 @@ func (_ *HTTPHealthcheck) RenderTerraform(t *terraform.TerraformTarget, a, e, ch return t.RenderResource("google_compute_http_health_check", *e.Name, tf) } -func (e *HTTPHealthcheck) TerraformAddress() *terraformWriter.Literal { - return terraformWriter.LiteralProperty("google_compute_http_health_check", *e.Name, "id") +func (e *HTTPHealthcheck) TerraformLink() *terraformWriter.Literal { + return terraformWriter.LiteralSelfLink("google_compute_http_health_check", *e.Name) } diff --git a/upup/pkg/fi/cloudup/gcetasks/targetpool.go b/upup/pkg/fi/cloudup/gcetasks/targetpool.go index b647d7c717..dace2132ca 100644 --- a/upup/pkg/fi/cloudup/gcetasks/targetpool.go +++ b/upup/pkg/fi/cloudup/gcetasks/targetpool.go @@ -30,7 +30,9 @@ import ( // TargetPool represents a GCE TargetPool // +kops:fitask type TargetPool struct { - Name *string + Name *string + HealthCheck *HTTPHealthcheck + Lifecycle fi.Lifecycle } @@ -56,6 +58,7 @@ func (e *TargetPool) Find(c *fi.CloudupContext) (*TargetPool, error) { actual.Name = fi.PtrTo(r.Name) // Avoid spurious changes + actual.HealthCheck = e.HealthCheck actual.Lifecycle = e.Lifecycle return actual, nil @@ -104,11 +107,8 @@ func (_ *TargetPool) RenderGCE(t *gce.GCEAPITarget, a, e, changes *TargetPool) e } type terraformTargetPool struct { - Name string `cty:"name"` - Description string `cty:"description"` - HealthChecks []string `cty:"health_checks"` - Instances []string `cty:"instances"` - SessionAffinity string `cty:"session_affinity"` + Name string `cty:"name"` + HealthChecks []*terraformWriter.Literal `cty:"health_checks"` } func (_ *TargetPool) RenderTerraform(t *terraform.TerraformTarget, a, e, changes *TargetPool) error { @@ -116,6 +116,9 @@ func (_ *TargetPool) RenderTerraform(t *terraform.TerraformTarget, a, e, changes tf := &terraformTargetPool{ Name: name, + HealthChecks: []*terraformWriter.Literal{ + e.HealthCheck.TerraformLink(), + }, } return t.RenderResource("google_compute_target_pool", name, tf)