Балансировщик нагрузки с завершением 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"
}
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
}
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
}
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
}
output "http_balancer_vip_address" {
value = openstack_lb_loadbalancer_v2.lb1-https-test.vip_address
}
После применения шаблона Terraform будет создан балансировщик нагрузки с TLS-завершением. Клиенты подключаются по HTTPS, а backend-серверы получают расшифрованные HTTP-запросы.
Если возникнут вопросы, обратитесь в техническую поддержку PS Cloud Services .