Создание региона¶
Регионы используются для логического разделения инфраструктуры и ресурсов платформы KeyStack. Регион представляет собой изолированную группу узлов, предоставляющих вычислительные, сетевые ресурсы и ресурсы хранения. Каждый регион разворачивается на своем, отдельном наборе узлов. Регионы управляются и настраиваются независимо друг от друга.
Примечание
В этой инструкции в качестве базового доменного имени облачной платформы используется cloud.itkey.com и имена сервисов по умолчанию. При выполнении инструкции указывайте ваши действительные имена.
Совет
Чтобы создать несколько регионов, повторите инструкцию из этого раздела нужное количество раз.
Создание и подготовка репозитория нового региона¶
Откройте веб-интерфейс развёрнутого GitLab по адресу
https://ks-lcm.cloud.itkey.com.Создайте форк GitLab-репозитория region1. Это репозиторий-шаблон, который используется для создания новых регионов. Для этого выполните действия:
Перейдите в проект project_k / deployments / region1.
Нажмите кнопку Fork.
В открывшемся окне укажите параметры:
Project name — имя региона.
Важно
Имя региона должно удовлетворять условиям:
содержать латинские буквы [a-z] и цифры [0–9];
дефисы не могут быть в начале и конце имени;
не должно содержать два дефиса одновременно;
не должно содержать пробелы и специальные символы (например,
!,$,&,_и т. д.);минимальная длина — 3, максимальная — 63 символа;
нечувствительно к регистру.
Project slug — укажите точно такой же как имя региона.
Select a namespace — выберите namespace для проекта, например,
project_k/deployments.
Нажмите кнопку Fork project.
Перейдите в созданный репозиторий нового региона.
Удалите связь с родительским репозиторием. При использовании ролевой модели это происходит автоматически и может занять около 10 минут.
Перейдите в раздел .
Нажмите кнопку Remove fork relationship.
Введите название региона для подтверждения действия.
Разрешите использование job-токена из других проектов. При использовании ролевой модели это происходит автоматически и может занять около 10 минут.
Перейдите в раздел .
В разделе CI/CD job token allowlist нажмите кнопку Add и выберите Group or project.
В поле Group or project внесите значение
project_k.Нажмите кнопку Add.
Выполнение некоторых пайплайнов развёртывания может занимать продолжительное время. Увеличьте таймаут пайплайнов по умолчанию:
Перейдите в раздел .
Установите значение Timeout —
5h.
Создайте ветку согласно вашему релизу keystack:
Перейдите в репозиторий нового региона.
Перейдите в раздел .
В разделе Create from выберите тег вашего релиза keystack.
В разделе Branch name — укажите имя ветки
master-<имя релиза keystack>.Нажмите Create branch.
Настройте параметры инфраструктуры созданного региона. Для этого:
Откройте веб-интерфейс Vault (
https://vault.<DOMAIN>) и авторизуйтесь с помощью реквизитов, полученных при установке платформы.Перейдите в Secrets Engines, а затем — в директорию installer. В директории откройте вкладку Issuers.
Нажмите на имя нужного issuer. Откроется страница View Issuer Certificate. Скопируйте содержимое поля CA Chain — это цепочка сертификатов, которая будет использоваться при следующих шагах настройки параметров инфраструктуры.
Войдите в GitLab и перейдите в репозиторий региона project_k / deployments / <имя региона>.
Откройте файл
certificates/ca/ca-bundle.crtи разместите в него следующие сертификаты:цепочку сертификатов Vault PKI (корневой и промежуточный сертификаты), полученную при шагах ранее;
цепочки CA, выпустившего сертификаты для сервисов LCM и для публичных/приватных эндпоинтов, в случае если используются внешние сертификаты:
для сервисов LCM — используйте файл
chain-ca.pem, подготовленный в директорииinstaller/certs/на этапе установки платформы — подробнее см. в разделе Установка инсталлятора;для публичных/приватных эндпоинтов — если вы планируете использовать собственные сертификаты, разместите их в Vault в директорию secret_v2 / deployments / <LCM FQDN> / <имя региона> / ssl_certificates до запуска пайплайна:
haproxy_pem— при включённомkolla_enable_tls_external,haproxy_internal_pem— при включённомkolla_enable_tls_internal. Значение каждого ключа может содержать сертификат, приватный ключ или их комбинацию. Также добавьте в текущий файл цепочку CA, выпустившего эти сертификаты — источник цепочки зависит от используемого PKI. Если сертификаты будут сгенерированы автоматически пайплайном, этот шаг можно пропустить.
Откройте файл
inventory.Заполните информацию об узлах инфраструктуры
[control],[network],[compute]в формате<имя узла> ansible_host=<IP адрес узла>.Откройте файл
globals.d/REGION.ymlи укажите значения параметров:kolla_internal_vip_address— виртуальный IP-адрес для внутреннего VIP-интерфейса (используется для балансировки запросов);kolla_internal_fqdn— DNS-имя для внутреннего VIP-адреса, например,internal.cloud.itkey.com;kolla_external_vip_address— виртуальный IP-адрес для внешнего VIP-интерфейса (используется для балансировки запросов);kolla_external_fqdn— DNS-имя для внешнего VIP-адреса, например,external.cloud.itkey.com;network_interface— имя интерфейса для MGMT-сети, на котором будет разворачиваться OpenStack;neutron_external_interface— имя интерфейса для связи с внешней инфраструктурой, например, сетями провайдеров, маршрутизаторами и плавающими IP-адресами.
Если вы используете сервис балансировки нагрузки Octavia, откройте файл
globals.d/octavia.ymlи укажите значения параметраoctavia_amp_network_cidr— IP-префикс подсети управления сервиса Octavia.
Для изменения ТУЗ
adminпо умолчанию в OpenStack добавьте в файл<region_name>/globals.d/REGION.ymlпеременнуюkeystone_admin_user: "<custom_name>". Данная опция задаст новое имя ТУЗ администратора (вместо стандартногоadmin).Для того чтобы скрыть домен
defaultи использовать собственный домен по умолчанию, в файл<region_name>/globals.d/REGION.ymlдобавьте переменнуюkeystone_default_domain: "<custom_domain>". Данная опция настроит Keystone так, чтобы он использовал заданный домен по умолчанию для аутентификации в OpenStack.
Настройка правила второй руки¶
При подключении GitLab к внешнему каталогу пользователей LDAP пользователям с ролью admin автоматически назначаются права Maintainer. Изменения конфигурационных файлов в репозитории региона должны вноситься через Merge Request и быть одобрены вторым пользователем с ролью admin. Такой подход называется правилом второй руки: ни один пользователь с ролью admin не может единолично изменить конфигурацию региона.
Для этого выполните следующие действия:
Настройте правила слияния для репозитория региона в соответствии с разделом Настройка правил Merge Request.
Убедитесь, что для согласования Merge Request доступны минимум два пользователя с ролью
admin. Подробнее о процессе утверждения см. раздел Процесс создания и утверждения Merge Request.
Генерация паролей и сертификатов для региона¶
Запустите пайплайн на генерацию паролей и сертификатов для региона:
Откройте проект нового региона.
Создайте новый пайплайн: .
Выберите ветку вашего релиза в выпадающем списке Run for branch name or tag
master-<имя релиза keystack>.Запустите пайплайн New pipeline.
Запустится задача setup, дождитесь её завершения.
Для каждого созданного региона повторите запуск пайплайна в его проекте.
Настройка паролей внешних сервисов¶
Для реализации автоэвакуации ВМ при сбое гипервизора, задайте пароль интерфейса IPMI baremetal-узлов:
Перейдите в веб-интерфейс развёрнутого Vault.
Перейдите в директорию с настройками региона secret_v2 / deployments / <LCM FQDN> / <имя региона> / passwords_yml.
Нажмите Create new version.
Найдите и замените значение параметра
bmc_passwordна пароль от интерфейса IPMI BMC-узлов.
По аналогии с предыдущим шагом в директории с настройками региона secret_v2 / deployments / <LCM FQDN> / <имя региона> / passwords_yml укажите пароли от своих сервисов в соответствующих полях, например:
ldap_user— LDAP пользователь в форматеldap-ro,ldap_password— пароль LDAP пользователя,smtp_user— SMTP пользователь,smtp_password— пароль SMTP пользователя,cinder_dorado_user_password— СХД,bird_external_bgp_password— пароль для подключения к автономной системе через сервис Bird.Примечание
Переменные
ldap_user,ldap_password,smtp_userиsmtp_passwordиспользуются для настройки автоматической ротации пользователей и паролей. Процесс настройки автоматической ротации описан в разделе Автоматическая ротация пользователей и паролей.
Имя пользователя для подключения к Redfish API задаётся в переменной
bmc_monitoring_user(по умолчаниюprometheus) в конфигурационном файле региона (по умолчанию/globals.d/REGION.yml). Пароль для учётной записи необходимо внести в Vault в качестве значения ключаbmc_monitoring_passwordв файлеpasswords_yml. Для безопасной работы с секретами реализована поддержка взаимодействия с Vault-агентом. Подробнее в разделе Prometheus redfish exporter.
Настройка правил межсетевого экрана (nftables)¶
Платформа позволяет автоматически настроить правила межсетевого экрана (в частности nftables) на узлах для защиты внешних подключений к узлам.
Правила по умолчанию являются примером и требуют дополнительной настройки. Доступ между всеми узлами платформы открывается по умолчанию и не требует дополнительной настройки.
Для описания настроек перейдите к разделу Настройка механизма фильтрации трафика.
Конфигурация BGP¶
В базовой конфигурации платформы механизм мониторинга состояния и сетевой доступности узлов реализуется сервисом keepalived на основе протокола VRRP. Альтернативно, для этих целей возможно использовать протокол BGP, который также поддерживается платформой.
Дополнительная настройка узлов перед развёртыванием¶
Выполните дополнительную конфигурацию узлов перед развёртыванием региона. Для этого используйте конфигурационный файл host_config/host-config.yml. Следуйте инструкциям по редактированию файла host-config.yml в разделе Использование host-config для настройки региона, не запуская пайплайн. Все выполненные вами конфигурации будут применены ниже при запуске задачи bootstrap-servers пайплайна развёртывания региона.
Запуск пайплайна развёртывания региона¶
Войдите в хранилище секретов Vault и перейдите в директорию secret_v2 / deployments / <LCM FQDN> / <имя региона> / ssl_certificates.
Внесите корректную цепочку сертификатов для внутреннего эндпоинта в параметр
haproxy_internal_pemи корректную цепочку сертификатов для публичного эндпоинта в параметрhaproxy_pem.Запустите пайплайн по развёртыванию региона:
Откройте веб-интерфейс развёрнутого GitLab.
Перейдите в репозиторий project_k / deployments / <имя региона>.
Создайте новый пайплайн: .
Выберите ветку вашего релиза в выпадающем списке Run for branch name or tag
master-<имя релиза keystack>.В открывшемся окне при необходимости укажите значения переменных:
KOLLA_ARGS— дополнительные теги:--limit <имя узла>— выполнить пайплайн для отдельного узла платформы;--tags <имя компонента>— выполнить пайплайн для отдельного компонента платформы.
KOLLA_ANSIBLE_DEPLOY_ACTION— список задач для kolla-ansible, должно быть указаноdeploy;KEYSTACK_RELEASE— версия KeyStack для развёртывания.
Запустите пайплайн New pipeline.
Дождитесь завершения задач setup.
Примечание
Задачи bootstrap-servers и deploy требуют ручного запуска — нажмите кнопку ▶ напротив соответствующей задачи в интерфейсе GitLab.
Запустите задачу bootstrap-servers и дождитесь её завершения. Если после её завершения автоматически запустятся связанные задачи, дождитесь их завершения.
Запустите задачу deploy и дождитесь её завершения.
Примечание
Общий список задач в пайплайне:
setup — подготовка паролей и настроек для развёртывания платформы;
backup-db — создание резервной копии базы данных MariaDB;
bootstrap-servers — установка необходимых пакетов и настройка компонентов ОС;
deploy — развёртывание и запуск сервисов KeyStack на узлах;
rally — валидация компонентов платформы;
tempest — тестирование платформы на соответствие конфигурации.
По завершении работы пайплайна регион будет создан. Вы можете переходить к настройке сетевого окружения региона.
Добавление новых узлов в существующий регион¶
После создания региона может возникнуть необходимость в добавлении новых узлов (гипервизоров) для расширения вычислительных мощностей. При выполнении этой операции важно использовать специальные параметры для сохранения доступности управляющего слоя.
Предупреждение
В версии 2025.1 при запуске пайплайна без добавления специальных тегов и ограничения по узлам происходит рестарт всех контейнеров в регионе. Это может привести к временной недоступности сервисов управляющего слоя.
Для безопасного добавления новых узлов выполните следующие действия:
Добавьте новые узлы в файл
inventoryрепозитория региона в соответствующие группы ([control],[network],[compute]).Запустите пайплайн с дополнительными параметрами:
Откройте веб-интерфейс развёрнутого GitLab.
Перейдите в репозиторий project_k / deployments / <имя региона>.
Создайте новый пайплайн: .
Выберите ветку вашего релиза в выпадающем списке Run for branch name or tag
master-<имя релиза keystack>.В открывшемся окне добавьте переменную
KOLLA_ARGSсо следующим значением:--skip-tags keepalived,rabbitmq,mariadb --limit control,new_servers* -e kolla_serial=1
Где:
--skip-tags keepalived,rabbitmq,mariadb— пропускает рестарт критически важных сервисов управляющего слоя, которые не участвуют в процессе добавления новых узлов. Предотвращает ненужный рестарт, способный привести к кратковременной недоступности.--limit control,new_servers*— ограничивает выполнение задач контроллерами и новыми серверами. Использование wildcard-символа (*) позволяет добавить сразу группу серверов с похожими именами (например, при добавлении целой стойки).-e kolla_serial=1— обеспечивает последовательное обновление узлов (по одному за раз), гарантируя доступность сервисов пользовательского интерфейса (Horizon, AdminUI) во время операции.
Запустите пайплайн New pipeline.
Дождитесь завершения задачи setup.
Запустите задачу bootstrap-servers и дождитесь её завершения.
Запустите задачу deploy и дождитесь её завершения.
После завершения работы пайплайна новые узлы будут добавлены в регион без прерывания работы существующей инфраструктуры.
Настройка ролевой модели в OpenStack¶
Примечание
Для настройки ролевой модели необходимо включить интеграцию с каталогами LDAP.
Примечание
Если конфигурация ролевой модели была подготовлена до развёртывания региона, параметры LDAPS, Keystone и ролевой модели уже применены. В этом случае пропустите шаги по настройке конфигурационных файлов и перейдите к созданию домена и настройке пользователей и групп в OpenStack.
Добавьте сертификат для LDAPS:
Откройте веб-интерфейс развёрнутого GitLab.
Перейдите в репозиторий project_k / deployments / <имя региона>.
Выберите ветку вашего релиза в выпадающем списке Run for branch name or tag
master-<имя релиза keystack>.Перейдите в директорию
certificates/ca. Откройте файлldaps.crtили создайте его. Добавьте в файл ваш сертификат LDAPS.
Создайте домен (в этом примере —
itkey) и добавьте в него пользователяadmin:Зайдите на узел LCM по SSH.
Выполните команды:
$ openstack domain create itkey $ openstack role add --domain itkey --user admin admin
Добавьте конфигурацию LDAPS для Keystone:
Откройте веб-интерфейс развернутого GitLab.
Откройте проект project_k / deployments / <имя региона>.
Выберите ветку вашего релиза в выпадающем списке Run for branch name or tag
master-<имя релиза keystack>.Найдите файл
globals.d/REGION.ymlи добавьте в него строки:Предупреждение
При использовании ОС SberLinux параметры
horizon_keystone_multidomainиhorizon_keystone_domain_choicesне указывайте — Horizon в KeyStack недоступен.horizon_keystone_multidomain: "True" horizon_keystone_domain_choices: default: default itkey: itkey keystone_ldap_url: "ldaps://<адрес вашего сервиса LDAPS>"
Перейдите в директорию
config/keystone/domainsи создайте файлkeystone.itkey.confсо следующим содержанием. При необходимости вgroup_filterиuser_filterзамените значенияCNс префиксомgroup_на названия ваших групп LDAP, а в значенияхDC=укажите ваши компоненты домена:[identity] driver = ldap [ldap] tls_cacertfile = "{{ openstack_cacert }}" group_allow_create = False group_allow_delete = False group_allow_update = False group_desc_attribute = description group_id_attribute = cn group_member_attribute = member group_name_attribute = cn group_objectclass = group group_filter = "(|(cn=group_*))" user = "{{ ldap_user }}" password = "{{ ldap_password }}" query_scope = sub suffix = "DC=test-keystack,DC=vm,DC=lab,DC=itkey,DC=com" user_tree_dn = "DC=mydomain-keystack,DC=vm,DC=lab,DC=itkey,DC=com" url = "{{ keystone_ldap_url }}" user_filter = "(&(objectClass=person)(objectClass=user)(|(memberof=CN=group_admin,OU=Keystack,OU=Applications,DC=mydomain-keystack,DC=vm,DC=lab,DC=itkey,DC=com)(memberof=CN=group_security_auditor,OU=Keystack,OU=Applications,DC=mydomain-keystack,DC=vm,DC=lab,DC=itkey,DC=com)(memberof=CN=group_reader,OU=Keystack,OU=Applications,DC=mydomain-keystack,DC=vm,DC=lab,DC=itkey,DC=com)(memberof=CN=group_member,OU=Keystack,OU=Applications,DC=mydomain-keystack,DC=vm,DC=lab,DC=itkey,DC=com)))" user_allow_create = False user_allow_delete = False user_allow_update = False user_enabled_attribute = userAccountControl user_enabled_default = 512 user_enabled_mask = 2 user_id_attribute = cn user_mail_attribute = mail user_name_attribute = sAMAccountName user_objectclass = person user_pass_attribute = userPassword group_tree_dn = "DC=mydomain-keystack,DC=vm,DC=lab,DC=itkey,DC=com" page_size = 0
Добавьте пароль пользователя LDAPS в Vault:
Откройте веб-интерфейс Vault.
Авторизуйтесь с помощью реквизитов для Vault, полученных на этапе установки дистрибутива KeyStack.
Перейдите в директорию секретов региона: secret_v2 / deployments / <LCM FQDN> / <имя региона> / passwords_yml.
Перейдите на вкладку Secret и нажмите Create new version.
Отредактируйте файл, замените значение поля
ldap_passwordна пароль пользователя LDAPS.
Запустите развёртывание компонентов Keystone, Horizon и AdminUI:
Откройте веб-интерфейс развернутого GitLab.
Перейдите в репозиторий project_k / deployments / <имя региона>.
Создайте новый пайплайн: .
Выберите ветку вашего релиза в выпадающем списке Run for branch name or tag
master-<имя релиза keystack>.В открывшемся окне добавьте параметр
KOLLA_ARGSсо значением-t keystone,horizon,adminuiдля запуска пайплайна только для этих компонентов.Запустите пайплайн: New pipeline.
Дождитесь завершения выполнения задач на шаге setup.
Запустите задачу deploy на шаге deploy и дождитесь её завершения.
Перезапустите контейнеры Keystone:
Зайдите на узел LCM по SSH.
Выполните команду:
$ docker restart keystone
$ podman restart keystone
Чтобы проверить настройку пользователей и групп LDAP, выполните команды OpenStack CLI, зайдя на узел LCM по SSH:
$ openstack user list --domain itkey +------------------------------------------------------------------+----------------+ | ID | Name | +------------------------------------------------------------------+----------------+ | 40d88d5463e910003e73ef9a3285c3fd907fb56c255ba27d938b48559a200a2b | member1 | | 9016b4c6ff10b980b1556b39fa995c9349a4bb64fed26d79d1c36ea5e4dde0dd | member2 | | 50b5b30a1aef6c6784344e95e62b53308606916d8953926cde3f26c46537e876 | member3 | | f84e98454612eda80d34d2ef1fe1a3624e2e6c597d3f57b30d64881d12b3c060 | infra_admin | | 68245853200911bb930b6c1d5f245c3f3444914a841b0a3ac226dbc59614e9f1 | support_admin | | f4b4749ba49d7223626f36fc91389fc061c37af11d4a8c8f4cb436bbbfd181ae | security_admin | | ccecd465ca6b617f81e6c6f803c8bb51c933f8def25439997a3984ff71a31f0f | reader | +------------------------------------------------------------------+----------------+ $ openstack group list --domain itkey +------------------------------------------------------------------+------------------------+ | ID | Name | +------------------------------------------------------------------+------------------------+ | 6588de10efbf97de47b57c9fd0fc5fbbce8bbc26ae7bbcd50511430cc96b8f50 | group_admin | | c94274dc724eb1aac6797ac99fd3cae2eeb1d3bc0135dc6bfa586d573736099e | group_member | | 1797223b40aa8409eba0ff0fe84c239a25e3f93ced5e8e55d230da5ccda373d2 | group_reader | | eb599167d78c91450e1ab74ff4077584a817be9c8f20144badcd88a11d46a0cc | group_security_auditor | +------------------------------------------------------------------+------------------------+
Создайте новый проект в домене itkey:
$ openstack project create demo --domain itkey
Назначьте группам роли в проекте OpenStack в соответствии с ролевой моделью. В командах указывайте конкретные идентификаторы групп из вывода команды
openstack group list --domain itkey:Добавьте роль member:
$ openstack role add --project demo --group <ID группы group_member> --user-domain itkey member
Добавьте роль admin:
$ openstack role add --project demo --group <ID группы group_admin> --user-domain itkey admin
Добавьте роль
readerдля группsecurity_auditorиreader:$ openstack role add --project demo --group <ID группы group_security_auditor> --user-domain itkey reader $ openstack role add --project demo --group <ID группы group_reader> --user-domain itkey reader
Активируйте ролевую модель в Портале администратора через конфигурацию региона:
Откройте веб-интерфейс GitLab.
Перейдите в репозиторий региона project_k / deployments / <имя региона>.
Выберите ветку вашего релиза в выпадающем списке Run for branch name or tag
master-<имя релиза keystack>.Откройте файл
globals.d/REGION.ymlи укажите в нём значения переменных:enable_rbac_model: "yes" opensearch_admin_tls: "CN=backend.{{ kolla_external_fqdn }}"
Параметр
enable_rbac_modelвключает ролевую модель.Параметр
opensearch_admin_tlsнастраивает интеграцию с системой логирования. В случае использования внешних сервисов (например, SecMan) в значение данного параметра необходимо включить дополнительные поля:opensearch_admin_tls: "CN=backend.external.<имя региона>.<имя домена>,OU=<organizational unit>,O=<organization>,STREET=<street or address>,C=<country>"
Валидные значения для полей
OU,O,STREET,Cнеобходимо уточнять у администратора PKI-системы, выпустившей сертификат.Создайте новый пайплайн: .
Выберите ветку вашего релиза в выпадающем списке Run for branch name or tag
master-<имя релиза keystack>.В открывшемся окне добавьте значение переменной
KOLLA_ARGSравное-t grafana,opensearch,adminui.Запустите пайплайн, нажав кнопку New pipeline.
Дождитесь завершения задач на этапе setup.
Запустите задачу deploy на этапе deploy и дождитесь её завершения.
Для проверки настройки ролевой модели войдите в веб-интерфейс Портала администратора в домене
itkeyпользователями с разными ролями. Вход должен быть успешным, доступные элементы соответствовать роли пользователя.