Поддерживает ли Terraform внутренний балансировщик нагрузки Google? https://cloud.google.com/compute/docs/load-balancing/internal/Terraform - Балансировщик внутренней нагрузки Google
ответ
Это технически делает, в том смысле, что она предоставляет вам с соответствующими функциями, чтобы запустить его:
https://www.terraform.io/docs/providers/google/r/compute_target_pool.html
К сожалению, документация на нее довольно беден и расположение функций означает, что вам необходимо настроить ряд взаимозависимых проверок работоспособности, целевых пулов, обработчиков бэкэнд и правил пересылки для достижения этой цели, очень отличающихся от того, насколько прост остальной. Сообщения об ошибках, отображаемые на terraform plan
и apply
, также весьма бесполезны.
В настоящее время я пытаюсь установить environment.tf
, который реплицирует существующий балансировщик нагрузки, который я вручную установил, и это доказывает серьезность проб и ошибок. Hashicorp необходимо добавить в свои документы гораздо больше вариантов использования и объяснений.
По состоянию на сентябрь 2017 года, конечно! К сожалению, документация для него не такая уж большая.
Вот очень грубый пример, возможно, не просто с помощью копирования/вставки!
resource "google_compute_instance_group" "elasticsearch-cluster" {
name = "elasticsearch-cluster"
description = "Terraform test instance group"
instances = [
"${google_compute_instance.elasticsearch-compute-instance.*.self_link}"
]
named_port {
name = "elasticsearch-api"
port = "9200"
}
named_port {
name = "elasticsearch-transport"
port = "9300"
}
zone = "us-central1-a"
}
resource "google_compute_forwarding_rule" "elasticsearch-forwarding-rule" {
name = "elasticsearch-lb"
load_balancing_scheme = "INTERNAL"
backend_service = "${google_compute_region_backend_service.elasticsearch-lb.self_link}"
ports = [ "9200", "9300" ]
}
resource "google_compute_region_backend_service" "elasticsearch-lb" {
name = "elasticsearch-lb"
protocol = "TCP"
timeout_sec = 10
session_affinity = "NONE"
backend {
group = "${google_compute_instance_group.elasticsearch-cluster.self_link}"
}
health_checks = ["${google_compute_health_check.elasticsearch-healthcheck.self_link}"]
}
resource "google_compute_health_check" "elasticsearch-healthcheck" {
name = "elasticsearch-healthcheck"
check_interval_sec = 5
timeout_sec = 5
tcp_health_check {
port = "9200"
}
}