openFuyao: установка

В прошлой, довольно обобщённой статье, мы сделали обзор openFuyao и если вы его ещё читали, то рекомендуется это сделать прямо сейчас, и только потом переходить к продолжению чтения данной статьи.
Сегодня же давайте перейдём от общего описания к практике. В нашей лаборатории мы выполним тестовую установку openFuyao: развернём сервер управления и подключим к нему рабочий узел для запуска различных приложений.
И пока мы ещё не начали, придётся сразу на берегу сделать важную оговорку. В данный момент времени веб-интерфейс openFuyao работает только на китайском языке, поэтому мы продемонстрируем вам как система выглядит «в оригинале» и затем воспользуемся функцией автопереводчика в браузере. Поэтому просьба отнестись снисходительно к замеченным огрехам на приведённых скриншотах.

Для установки сервера управления нам не нужен очень мощный сервер, минимальные требования: 2 CPU, 4 Гб оперативной памяти и 100Гб места на диске. Под такие требования мы просто возьмём виртуалку (архитектуры x86_64), под управлением openEuler 24.03 LTS.
Для начала нам надо скачать скрипт download.sh, которым мы (в свою очередь) загрузим все необходимые для установки openfuyao компоненты:

Рисунок 1. Установка BKE

Запускаем команду онлайн-установки openFuyao:


Рисунок 2. Онлайн установка openFuyao

Следим за процессом установки:


Рисунок 3. Лог установки openFuyao

Окончание установки:

Рисунок 4. Окончание установки openFuyao

Все приложения openFuyao запускаются в локальном k8s кластере (используется k3s).
Мы можем использовать привычную утилиту kubectl для того, чтобы посмотреть запущенные в контейнерах приложения сервера управления openFuyao:



Рисунок 5. Узел управления openFuyao


Рисунок 6. Запущенные pods openFuyao.

Тут можно сделать отступление и рассмотреть из каких собственно компонентов состоит openFuyao.

Консоль и пользовательский интерфейс:

  • console-website — фронтенд веб-консоли openFuyao. Предоставляет графический интерфейс для управления кластером, ресурсами, пользователями и плагинами.

  • console-service — бэкенд API консоли. Обрабатывает запросы от frontend, взаимодействует с Kubernetes API, управляет сессиями, авторизацией и бизнес-логикой платформы.

Установка и обновление:

  • installer-website — веб-интерфейс мастера установки/обновления. Используется при первоначальной настройке кластера или при добавлении новых компонентов через UI.

  • installer-service — бэкенд-сервис установщика. Выполняет процедуры развёртывания, валидации конфигураций, обновления компонентов и отката при ошибках.

Аутентификация и управление доступом

  • oauth-server — сервер OAuth 2.0 / OpenID Connect. Выдаёт access/refresh-токены, управляет сессиями пользователей, интегрируется с внешними провайдерами идентичности.

  • oauth-webhook — вебхук для валидации токенов и проверки прав доступа. Используется Kubernetes API Server и другими компонентами для авторизации запросов.

  • user-management-operator — оператор управления пользователями и ролями. Автоматизирует создание учётных записей, назначение ролей (RBAC), синхронизацию с внешними каталогами. Отслеживает кастомные ресурсы типа User, RoleBinding.

Расширяемость и плагины

  • plugin-management-service — сервис управления плагинами. Отвечает за каталог компонентов (Application Marketplace), установку/удаление/обновление плагинов через Helm, валидацию зависимостей.

Так, первый шаг мы сделали успешно, теперь давайте попадём на веб-интерфейс управления openFuyao.

Для этого давайте (опять-таки при помощи утилиты kubectl) посмотрим, что для нас подготовил openFuyao для доступа снаружи.
Для этого мы смотрим перечень служб (service):


Рисунок 7. Перечень служб openFuyao.

Тут мы видим службу (type: Nodeport), которая публикует наружу порт 30010. Давайте попробуем зайти на этот порт при помощи браузера.
Мы подключаемся и видим следующую картину:


Рисунок 8. Первый вход на веб-интерфейс openFuyao.

Согласно документации логин — admin, а пароль по-умолчанию «test@1234». Как только мы вводим эти креды, нам предлагается поменять пароль для пользователя admin на свой. Меняем:


Рисунок 9. Смена пароля для пользователя admin.

После смены пароля мы проваливаемся в интерфейс добавления кластеров k8s:

Рисунок 9. Интерфейс добавления кластеров k8s.

Ну что же, теперь настала очередь добавить физический сервер, предназначенный для запуска приложений в k8s. Для этого мы будем использовать сервер Huawei 2288H V5, имеющий следующие характеристики:

  • 2 CPU Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz

  • 256 Гб ОП

  • 2 SAS диска ST600MM0009

  • видеокарта NVIDIA Corporation GV100GL [Tesla V100 PCIe 16GB] (rev a1)

  • ОС: openEuler 24.03 LTS

  • ядро: 6.6.0-129.0.0.114.oe2403.x86_64

 

Нажимаем в правом верхнем углу кнопку Добавление узла k8s и заполняем поля подключения к серверу и установки на него компонентов openFuyao:


Рисунок 10. Заполнение полей.

Внизу слева нажимаем правую кнопку:


Рисунок 11. Кнопка запуска установки.

Следим за установкой компонентов:


Рисунок 12. Журнал установки и запуска компонентов openFuyao.

Если закрыть это окно, мы увидим список кластеров k8s и их состояния. Наш добавляемый кластер пока ещё в стадии установки:


Рисунок 13. Перечень кластеров k8s.

Через несколько минут кластер «позеленел» и готов к использованию:


Рисунок 14. Завершение установки кластера k8s.

Если нажать на его название, мы увидим 2 вкладки с информацией о k8s:


Рисунок 15. Завершение установки кластера k8s.

Зайдём по ssh на наш физический сервер 172.17.3.6 пользователем root и посмотрим запущенные контейнеры (опять-таки с использованием нашей любимой утилиты kubectl):

Рисунок 16. Перечень pod в кластере k8s.

Отлично! Теперь нам предстоит зайти на веб-интерфейс управления этим кластером k8s. Тут надо сделать необходимое пояснение. В данный момент времени openFuyao предоставляет 2 типа веб-интерфейса: первый для добавления k8s кластеров (для этого мы подключаемся на порт 30010 на сервере управления openFuyao) и второй — это веб-интерфейс непосредственного управления кластеров k8s — он запускается на порту (nodeport) 31616 любого узла кластера k8s.

Собственно, давайте это продемонстрируем. Для того, чтобы узнать порт для подключения, мы также воспользуемся перечнем служб (services) на нашем кластере k8s:


Рисунок 16. Перечень pod в кластере k8s.

Отсюда нетрудно заметить (у нас тут одна служба с типом NodePort) что подключаться надо на порт 31616.

Заходим на него и видим:


Рисунок 17. Приглашение на веб-интерфейс управления k8s.

Так же для входм используем стандартный логин admin и пароль «test@1234», при входе будет также предложено сменить пароль на более надёжный:

Рисунок 18. Смена пароля admin.

После этого (тадам!) мы видим дружелюбный интерфейс 🙂



Рисунок 19. Интерфейс управления кластером k8s.

Не пугаемся и воспользуемся функцией автоперевода в браузере:


Рисунок 20. Перечень deployments

Отлично! Теперь давайте попробуем проделать какую-нибудь манипуляцию с приложениями в k8s с использованием веб-интерфейса управления.

Мы знаем, что k8s устанавливает локальный DNS сервер (coredns) в пространство kube-system. Давайте проделаем (исключительно для теста, на продакшн системах так делать не надо!) уменьшение количества реплик с двух до одного.
С использованием консоли (чтобы быть на 100% уверенным), мы убеждаемся, что coredns у нас запущен в количестве двух подов:

Рисунок 21. 2 пода coredns

Теперь в веб-интерфейсе перейдём в namaspace kube-system и у deployment coredns мы выберем операцию «modified»:


Рисунок 22. Переход в namespace kube-system и редактирование coredns

В открывшемся yaml редакторе мы находим строчки с количество реплик:


Рисунок 23. Текущее количество реплик

Меняем на 1 для сохранения нажимаем кнопку внизу справа:


Рисунок 24. Сохранение deployment coredns

Переходим в консоль и убеждаемся, что количество реплик уменьшилось до 1:


Рисунок 25. Количество реплик coredns

Таким образом мы убеждаемся, что мы можем управлять нашим кластером k8s при помощи не консольной утилиты kubectl, а с использованием веб-интерфейса.
На этом мы на сегодня заканчиваем, следим дальше за развитием этого интересного проекта и стараемся информировать вас обо всех интересных новостях!