Балансировщик нагрузки TERMINATED_HTTPS в Terraform

Балансировщик нагрузки с завершением TLS (TERMINATED_HTTPS) принимает соединения по протоколу HTTPS, расшифровывает их и передает HTTP-трафик на внутренние серверы. Это снижает нагрузку на приложения и позволяет использовать возможности L7 (управление заголовками, cookie и пр.).


Настройка провайдера

В конфигурации Terraform укажите подключение к OpenStack и параметр use_octavia = true:

provider "openstack" {
  user_name   = "your_project_login"
  tenant_name = "your_project_name"
  password    = "your_project_password"
  auth_url    = "https://auth.pscloud.io/v3/"
  use_octavia = true
}

Сертификаты

Для TLS-настройки загрузите сертификат и ключ в Key Manager:

resource "openstack_keymanager_secret_v1" "certificate" {
  name                 = "lb1-example-crt"
  payload              = file("lb1.example.kz.crt")
  secret_type          = "certificate"
  payload_content_type = "text/plain"
}

resource "openstack_keymanager_secret_v1" "private_key" {
  name                 = "lb1-example-key"
  payload              = file("lb1.example.kz.key")
  secret_type          = "private"
  payload_content_type = "text/plain"
}

resource "openstack_keymanager_container_v1" "tls_1" {
  name = "lb1-example-tls"
  type = "certificate"

  secret_refs {
    name       = "certificate"
    secret_ref = openstack_keymanager_secret_v1.certificate.secret_ref
  }

  secret_refs {
    name       = "private_key"
    secret_ref = openstack_keymanager_secret_v1.private_key.secret_ref
  }
}

Если используется промежуточный сертификат (intermediate), добавьте его в блок secret_refs.


Балансировщик нагрузки

resource "openstack_lb_loadbalancer_v2" "lb1-https-test" {
  name          = "lb1-https-test"
  vip_subnet_id = "fd9d5eb0-a232-46f9-988b-b911d4f1dbdc"
}

Listener

resource "openstack_lb_listener_v2" "listen-https-test" {
  name                    = "listen-https-test"
  protocol                = "TERMINATED_HTTPS"
  protocol_port           = 443
  connection_limit        = -1
  loadbalancer_id         = openstack_lb_loadbalancer_v2.lb1-https-test.id
  default_tls_container_ref = openstack_keymanager_container_v1.tls_1.container_ref
}

Pool

resource "openstack_lb_pool_v2" "https-pool-test" {
  name       = "https-pool-test"
  protocol   = "HTTP"
  lb_method  = "ROUND_ROBIN"
  listener_id = openstack_lb_listener_v2.listen-https-test.id
}

Health Monitor

resource "openstack_lb_monitor_v2" "https-monitor-test" {
  name          = "https-monitor-test"
  delay         = 5
  max_retries   = 3
  timeout       = 5
  type          = "HTTP"
  url_path      = "/"
  http_method   = "GET"
  expected_codes = "200"
  pool_id       = openstack_lb_pool_v2.https-pool-test.id
}

Участники пула

resource "openstack_lb_member_v2" "centos-lb2-https-test" {
  name          = "centos-lb2-https-test"
  address       = "192.168.0.31"
  protocol_port = 80
  pool_id       = openstack_lb_pool_v2.https-pool-test.id
}

resource "openstack_lb_member_v2" "centos-lb1-https-test" {
  name          = "centos-lb1-https-test"
  address       = "192.168.0.165"
  protocol_port = 80
  pool_id       = openstack_lb_pool_v2.https-pool-test.id
}

Опционально: вывод IP

output "http_balancer_vip_address" {
  value = openstack_lb_loadbalancer_v2.lb1-https-test.vip_address
}

Результат

После применения шаблона Terraform будет создан балансировщик нагрузки с TLS-завершением. Клиенты подключаются по HTTPS, а backend-серверы получают расшифрованные HTTP-запросы.

Поддержка

Если возникнут вопросы, обратитесь в техническую поддержку PS Cloud Services.

question
Не нашли подходящего ответа?
Напишите запрос в службу поддержки
Написать сейчас