Настройка 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

Включение и отключение параметров TLS

Для изменения параметров TLS:

  1. Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.

  2. Откройте файл globals.d/REGION.yml и измените в нём значения необходимых переменных.

  3. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  4. Запустите пайплайн: New pipeline.

  5. Запустите задачу deploy в созданном пайплайне.

  6. Дождитесь завершения выполнения задачи.

Использование собственных сертификатов для настройки 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 в регионе.