GCP Terraform: Setting port for backend service

Viewed 248

Reading through the docs here:

https://www.terraform.io/docs/providers/google/r/compute_backend_service.html

We can define backend service:

resource "google_compute_backend_service" "kubernetes-nginx-prod" {
  name                            = "kubernetes-nginx-prod"
  health_checks                   = [google_compute_health_check.kubernetes-nginx-prod-healthcheck.self_link]

  backend {
    group = replace(google_container_node_pool.pool-1.instance_group_urls[0], "instanceGroupManagers", "instanceGroups")
    # TODO missing port 31443
  }
}

It seems we are unable to set backend service port via the Terraform settings:

enter image description here

Recreating the backend service without this settings actually leads to downtime for us and the port must be written manually.

1 Answers

We need to reference the port name that we gave in the instance group for e.g.

resource "google_compute_backend_service" "test" {
  name          = "test-service"
  port_name     = "test-port"
  protocol      = "HTTP"
  timeout_sec   = 5
  health_checks = []

  backend {
    group = "${google_compute_instance_group.test-ig.self_link}"
  }
}

resource "google_compute_instance_group" "test-ig" {
  name        = "test-ig"
  instances = []

  named_port {
    name = "test-port"
    port = "${var.app_port}"
  }

  zone = "${var.zone}"
}
Related