terraform GCP http (s) Балансировщик нагрузки

Я пытаюсь создать балансировщик нагрузки HTTP (S), используя terraform на GCP. Я хочу, чтобы он обслуживал клиентов HTTP и HTTPS. Я использую следующие методы для создания интерфейсной части (google_compute_global_forwarding_rule) LB.

// SSL
resource "google_compute_global_forwarding_rule" "default-ssl" {
  name       = "frontend-https"
  target     = google_compute_target_https_proxy.default-ssl.self_link
  port_range = "443"
}


resource "google_compute_target_https_proxy" "default-ssl" {
  provider         = google-beta
  name             = "target-proxy-ssl"
  description      = "a description"
  ssl_certificates = ["mysslcert"]
  url_map          = google_compute_url_map.default.self_link
}

// non SSL
resource "google_compute_global_forwarding_rule" "default" {
  name       = "frontend-http"
  target     = google_compute_target_http_proxy.default.self_link
  port_range = "80"
}

resource "google_compute_target_http_proxy" "default" {
  project     = var.project_id
  provider    = google-beta
  name        = "target-proxy"
  description = "a description"
  url_map     = google_compute_url_map.default.self_link
}

проблема в том, что он выделяет два IP-адреса; Один для HTTP и один для HTTPS. Но когда я создаю Loadbalancer на GCP вручную (без терраформирования), я могу создать IP-адрес и выбрать протокол. таким образом я могу использовать тот же IP-адрес при создании следующего правила внешнего интерфейса. добавление изображения

терраформа создана;

введите здесь описание изображения

руководство создано;

введите здесь описание изображения

Примите вашу помощь по созданию балансировщика нагрузки, имеющего только один IP-адрес.


person fFace    schedule 22.01.2020    source источник
comment
Сначала вам нужно выделить IP-адрес, а затем выбрать адрес при создании внешних интерфейсов балансировщика нагрузки.   -  person John Hanley    schedule 22.01.2020
comment
Итак, я создал IP-адрес, как предложил @john Hanley, и передал его модулю, как показано ниже; resource google_compute_global_forwarding_rule default-ssl {name = frontend-https ip_address = var.ext_static_ip target = google_compute_target_https_proxy.default -ssl.self_link port_range = 443}   -  person fFace    schedule 24.01.2020


Ответы (2)


Вы также можете выделить внешний IP-адрес на лету следующим образом:

resource "google_compute_global_address" "L7LB_IP_ADDRESS" {
  name                  = "l7lb-external-ip-address"
}

Затем в правилах переадресации (фронтенд) установите ip-адрес:

resource "google_compute_global_forwarding_rule" "EXTERNAL_FWD_RULE_HTTP" {
  name                  = "frontend-80"
  ip_address            = google_compute_global_address.L7LB_IP_ADDRESS.address
  port_range            = "80"
}
resource "google_compute_global_forwarding_rule" "EXTERNAL_FWD_RULE_HTTPS" {
  name                  = "frontend-443"
  ip_address            = google_compute_global_address.L7LB_IP_ADDRESS.address
  port_range            = "443"
}
person John Heyer    schedule 22.10.2020

Предоставляемый ресурс IP-адреса должен иметь цель SHARED_LOADBALANCER_VIP в Terraform.

SHARED_LOADBALANCER_VIP для адреса, который может использоваться несколькими внутренними балансировщиками нагрузки. https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_address

person hj5708    schedule 24.05.2021