Настройка TLS¶
В KeyStack TLS настраивается на нескольких уровнях:
TLS на VIP — шифрует соединение между клиентом OpenStack и HAProxy. Без этой опции API-эндпоинты доступны по HTTP.
TLS во внутренней сети (backend TLS) — шифрует соединение между HAProxy и серверными сервисами API.
Для компонентов LCM TLS включён по умолчанию — самоподписанные сертификаты генерируются при установке.
Значения параметров TLS по умолчанию заданы в релизе KeyStack и загружаются поверх стандартных значений kolla-ansible. При необходимости их можно переопределить в файле globals.d/REGION.yml в репозитории региона. Значения по умолчанию:
kolla_enable_tls_external: "yes" # TLS между клиентом OpenStack и HAProxy на внешнем VIP
kolla_enable_tls_internal: "yes" # TLS между клиентом OpenStack и HAProxy на внутреннем VIP
kolla_enable_tls_backend: "yes" # TLS между HAProxy и серверными сервисами API
kolla_copy_ca_into_containers: "yes" # Копирование CA-сертификата внутрь контейнеров сервисов
database_enable_tls_backend: "no" # TLS между ProxySQL и MariaDB
database_enable_tls_internal: "no" # TLS между сервисами OpenStack и ProxySQL
nova_qemu_vnc_tls: "yes" # TLS для трафика между клиентом и прокси-сервером noVNC
libvirt_tls: "yes" # mTLS для API Libvirt
rabbitmq_enable_tls: "yes" # TLS для RabbitMQ
kolla_enable_mtls_backend: "no" # mTLS между HAProxy и серверными сервисами
kolla_enable_mtls_external: "no" # mTLS на внешнем VIP
kolla_enable_tls_external: "yes" # TLS между клиентом OpenStack и HAProxy на внешнем VIP
kolla_enable_tls_internal: "yes" # TLS между клиентом OpenStack и HAProxy на внутреннем VIP
kolla_enable_tls_backend: "yes" # TLS между HAProxy и серверными сервисами API
kolla_copy_ca_into_containers: "yes" # Копирование CA-сертификата внутрь контейнеров сервисов
database_enable_tls_backend: "yes" # TLS между ProxySQL и MariaDB
database_enable_tls_internal: "no" # TLS между сервисами OpenStack и ProxySQL
nova_qemu_vnc_tls: "yes" # TLS для трафика между клиентом и прокси-сервером noVNC
libvirt_tls: "yes" # mTLS для API Libvirt
rabbitmq_enable_tls: "yes" # TLS для RabbitMQ
kolla_enable_mtls_backend: "yes" # mTLS между HAProxy и серверными сервисами
kolla_enable_mtls_external: "no" # mTLS на внешнем VIP
Включение и отключение параметров TLS¶
Для изменения параметров TLS:
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
globals.d/REGION.ymlи измените в нём значения необходимых переменных.Создайте новый пайплайн: .
Запустите пайплайн: New pipeline.
Запустите задачу deploy в созданном пайплайне.
Дождитесь завершения выполнения задачи.
Использование собственных сертификатов для настройки TLS на VIP¶
Параметры kolla_enable_tls_internal и kolla_enable_tls_external управляют TLS для каждого VIP независимо. Чтобы использовать отдельные сертификаты, добавьте в globals.d/REGION.yml параметры kolla_internal_fqdn_cert и kolla_external_fqdn_cert, в котором укажите пути до файлов сертификатов:
kolla_internal_fqdn_cert: "<путь к файлу сертификата внутреннего VIP>"
kolla_external_fqdn_cert: "<путь к файлу сертификата внешнего VIP>"
После внесения изменений создайте и запустите пайплайн.
Настройка TLS для noVNC¶
Для noVNC шифрование обеспечивается на двух участках: между клиентом и прокси-сервером (управляется параметром nova_qemu_vnc_tls) и между прокси-сервером и Libvirt (управляется параметром libvirt_tls). Для полной защиты соединения оба параметра должны быть включены.
Если в процессе настройки параметров TLS меняется только значение параметра nova_qemu_vnc_tls, при создании пайплайна добавьте переменную KOLLA_ARGS со значением -t nova, чтобы развёртывание выполнилось только для компонентов Nova.
Сертификаты OpenStack в Vault¶
Сертификаты для сервисов OpenStack хранятся в Vault по пути secret_v2 / deployments / <LCM FQDN> / <имя региона> / ssl_certificates и генерируются автоматически при запуске пайплайна. Набор ключей зависит от включённых параметров TLS:
haproxy_pemгенерируется при включённомkolla_enable_tls_external;haproxy_internal_pem— при включённомkolla_enable_tls_internal;backend_pem,backend_key_pem— при включённомkolla_enable_tls_backendилиrabbitmq_enable_tls;libvirt_cacert,libvirt_serverkey,libvirt_clientkey— при включённомlibvirt_tlsилиnova_qemu_vnc_tls.
Значение каждого ключа может содержать сертификат, приватный ключ или их комбинацию.
Для использования собственных сертификатов замените значения соответствующих ключей в Vault перед запуском пайплайна.
Настройка mTLS¶
Для настройки mTLS между сервисами обратитесь к разделу mTLS в регионе.