OpenStack, VK Cloud, Selectel

Интеграция с OpenStack API.

Назначение

Провайдер OpenStack позволяет разворачивать Kubernetes-кластеры на виртуальных машинах в среде OpenStack (или совместимых облаках).

Для настройки провайдера необходимо, чтобы соответствующий сервис в кластере управления был включён и находился в режиме управления Авто. Подробнее: Провайдер OpenStack (shturval-capos).

Сводная таблица инфраструктурных CR OpenStack в терминах Cluster API: раздел Кастомные ресурсы жизненного цикла узлов — OpenStack.

Предварительные требования

Перед настройкой провайдера убедитесь, что:

  • в вашей инфраструктуре есть платформа виртуализации на основе OpenStack или совместимое публичное облако: VK Cloud, Selectel;
  • создана сервисная учётная запись с правами не ниже Администратор Kubernetes/Администратор проекта;
  • в платформе виртуализации заранее подготовлены образы (images) для нужных версий Kubernetes.

Требования VK Cloud

  • Проверьте тип доступа к образу: платформа может использовать только образы с типом доступа публичный — public. Образы с типом доступа приватный — private не будут доступны для выбора при добавлении шаблона ВМ в экземпляр провайдера.

  • Сервисной учётной записи должны быть назначены роли, которых должно быть достаточно для создания/удаления кластера, проверки подключения провайдера. Как минимум это роли:

РольИмя в VK CloudРазрешения
mcs_admin_vmАдминистратор виртуальных машинNova (создание и удаление ВМ), Glance (поиск образа), Cinder (root-диски), Neutron, включая группы безопасности и Floating IP
mcs_admin_networkАдминистратор сетиOctavia (создание и удаление LB для kube-apiserver и ingress)

Полные административные роли проекта (mcs_owner, mcs_co_owner, mcs_admin) выдавать не требуется. Отдельно разрешения glance_*, cinder_*, neutron_*, octavia_* из справочника IAM в каталоге ролей VK Cloud недоступны для назначения, поэтому набор доступа собирается из существующих ролей.

Если создание балансировщика падает с ошибкой — добавьте роль:

РольИмя в VK CloudРазрешения
mcs_admin_network_securityАдминистратор сетевой безопасностиДоступ ко всем объектам сетевой подсистемы. Нужна дополнительно, если после выдачи mcs_admin_vm и mcs_admin_network создание балансировщика падает с ошибкой

Изменение учётной записи и её прав в существующем экземпляре провайдера не применяется к ранее созданным кластерам. Учетные данные экземпляра провайдера хранятся в секрет неймспейса capos-system кластера управления. Новые права будут действовать только для кластеров, созданных после изменения провайдера.

Поддерживаемые платформы

  • OpenStack
  • VK Cloud
  • Selectel

Настройки конфигурации провайдера (после проверки подключения) идентичны для всех платформ. Настройки подключения различаются.

Соответствие полей в платформах виртуализации

Поля в форме конфигурации провайдера соответствуют сущностям платформы. Где искать:

Поле в платформе «Штурвал»OpenStackVK CloudSelectel
Auth URLURL Keystone (порт 5000). Панель: Доступ к APIПанель: Настройки проекта → Доступ по APIПо умолчанию https://cloud.api.selcloud.ru/identity/v3
Project IDИдентификация → Проекты → иконка копирования IDНастройки проектаОблачная платформа → меню проектов → иконка копирования ID в строке проекта
Номер аккаунта Selectel——Номер аккаунта в правом верхнем углу панели Selectel
Project Domain IDВ разделе идентификацииВ настройках проекта—
Region nameНапример, RegionOneИмя регионаИмя пула/зоны (например, ru-9)
Учётная записьСервисный пользователь или Токен. Токен: Доступ для приложенийУправление доступами — логин и пароль. Токен Keystone не подходит для длительного использованияТолько сервисный пользователь (см. примечание ниже)
Сервисный пользовательИдентификация → пользователь с ролями heat_stack_owner, adminУправление доступамиУправление доступом → Управление пользователями → вкладка Сервисные пользователи. Роли: Администратор аккаунта, Администратор пользователей
RC.shДоступ к API → скачать openrc.shУправление доступами → RC.sh v3Управление доступами → RC.sh v3

Обратите внимание! Важно для Selectel: Не используйте аутентификацию по токену — токен в Selectel короткоживущий (не более 1 часа) и непригоден для работы с Cluster API. Необходимо создать сервисную учётную запись с ролями Администратор аккаунта и Администратор пользователей. Подробнее о создании сервисной учётной записи — в документации Selectel, раздел настройки Terraform.

Не используйте для сервисной учётной записи пароли с повторяющимися спецсимволами, например, &&: это может привести к ошибке подключения провайдера виртуализации.

Создание экземпляра

На вкладке Платформа в карточке Провайдеры инфраструктуры нажмите Управлять. Откроется страница Конфигурация провайдеров. В блоке Сервисы провайдеров проверьте, включён ли Провайдер OpenStack, VK Cloud, Selectel. Если сервис отключён, нажмите на переключатель и дождитесь запуска. Затем нажмите Добавить экземпляр провайдера → «+ OpenStack» (или «VK Cloud», «Selectel»).

Скриншот: вкладка «Платформа» — переход в конфигурацию провайдеров

Вкладка Платформа: карточка Провайдеры инфраструктуры и ссылка Управлять

Переключатель сервиса переводит связанные SSC провайдера в режим auto: сначала CRD-чарт, затем основной чарт провайдера. Дождитесь, пока сервис перейдёт в состояние готовности.

Переключение режима сервиса провайдера

Данные можно ввести вручную или загрузить файлом RC.sh.

После ввода данных нажмите Проверить подключение. После создания экземпляра провайдера изменить данные подключения можно только после успешной проверки подключения.

Конфигурация подключения (вручную)

Форма подключения OpenStack

Конфигурация подключения OpenStack

ПолеОбязательностьОписание
Auth URL (Identity endpoint)ДаURL службы авторизации Keystone. Пример: http://10.11.111.111:5000/v3.
Project IDДаИдентификатор проекта. В панели OpenStack: Идентификация → Проекты.
Номер аккаунта SelectelДля SelectelНомер аккаунта Selectel. В панели он доступен в правом верхнем углу.
Project Domain IDДаИдентификатор домена проекта.
Region nameДаИмя региона (например, RegionOne).
InterfaceДаИнтерфейс доступа (обычно public).
Identity API VersionНетВерсия API (по умолчанию 3).
Сертификат (cacert)НетКорневой сертификат при использовании самоподписного CA.
Проверять сертификатНетВключить проверку TLS (по умолчанию — нет).
Тип учётной записиДаСервисный пользователь — логин и пароль; Токен — только токен (в панели: Доступ для приложений). Для Selectel используйте только сервисного пользователя — токен короткоживущий и непригоден для Cluster API.
Name (username)При сервисном пользователеИмя пользователя с ролями heat_stack_owner, admin.
ПарольПри сервисном пользователеПароль учётной записи.
User Domain NameНетИмя домена пользователя.
ТокенПри выборе «Токен»Токен из панели OpenStack.

Конфигурация подключения (RC.sh)

Загрузка RC.sh

Загрузка RC.sh для OpenStack

Загрузите файл RC.sh из панели OpenStack (раздел Доступ к API) и укажите пароль сервисного пользователя.

Конфигурация провайдера (после проверки подключения)

ПолеОбязательностьОписание
Имя провайдераДаУникальное имя экземпляра.
CloudNameДаИмя облака (например, vk, selectel).
Сетевой интерфейс ВМДаИмя интерфейса на ВМ (например, eth0).
sshKeyNameДаSSH-ключ для доступа к ВМ. Выберите из списка ключей OpenStack.
Подсеть узловДаПодсеть для узлов кластера. Не должна пересекаться с подсетями подов и сервисов. Создаётся платформой.
externalNetworkIDДаИдентификатор внешней сети.
Типы ВМ (flavours)ДаТипы виртуальных машин для узлов.
Типы дисков (volume types)ДаТипы томов для дисков ВМ.
Зоны доступностиНетAvailability zones при необходимости.
Управление Security GroupsНетВключить управление группами безопасности (по умолчанию — Да).
Разрешить CSIНетВключить для использования OpenStack Cinder CSI. Если CSI разрешён в экземпляре провайдера, при создании кластера с этим экземпляром будет доступна интеграция CSI.

Шаблоны образов

Добавьте образы (images) для нужных версий Kubernetes. Образы должны быть заранее подготовлены в платформе виртуализации по единой инструкции.

В блоке Шаблоны виртуальных машин нажмите + для добавления шаблона. В боковом окне выберите имя (как в виртуализации) и версию Kubernetes. Версия Штурвала заполнится автоматически и будет доступна только для просмотра. Можно добавить несколько шаблонов с одинаковой версией Kubernetes.

После создания провайдера в настройках отображаются только выбранные типы ВМ, типы дисков и зоны доступности.

Чтобы обновить версию Kubernetes на узлах кластера, используйте инструкцию Узлы и шаблоны ВМ.

Если в VK Cloud создан образ и на странице конфигурации экземпляра провайдера VK Cloud в списке шаблонов виртуальных машин он отсутствует, проверьте в платформе виртуализации тип доступа образа. Он должен быть публичный — public, см. раздел Изменить тип доступа образа в VK Cloud.

Особенности

Изменить тип доступа образа

Если образ в VK Cloud с типом доступа приватный — private, измените его. В интерфейсе Портал администратора VK Cloud:

  1. В панели VK Cloud откройте меню проекта и выберите Настройки проекта.
  2. На вкладке Доступ по API скопируйте значение Project ID.
  3. Перейдите в раздел Образы.
  4. В строке нужного образа нажмите … и выберите Поделиться образом.
  5. В окне Управление доступом выберите вкладку Другие проекты.
  6. В поле ID проекта в OpenStack вставьте скопированный Project ID и нажмите Разрешить доступ.

После выдачи доступа образ будет доступен в списке шаблонов ВМ в экземпляре провайдера VK Cloud.