Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки

Эта страница простыми словами объясняет, как устроен веб-интерфейс: почему он делится на две части, чем проект отличается от неймспейса, откуда интерфейс знает, какие разделы вам показывать, как он учитывает ваши права и как ведёт себя на небольших экранах.

Деление на Систему и Проекты

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

Половина Что это Кто здесь работает
Система Администрирование самой платформы Платформенные инженеры и администраторы
Проекты Использование платформы для приложений Продуктовые команды и пользователи

Деление строгое: то, что относится к платформе, нельзя открыть в «Проектах», и наоборот. Между половинами переключаются вручную — селектором в левом верхнем углу; сам по себе интерфейс вас туда-сюда не перебрасывает.

Чем проект отличается от неймспейса

Это почти одно и то же, и вот в чём разница:

  • Неймспейс — стандартное понятие Kubernetes: «папка», в которой сгруппированы ресурсы одного приложения или команды.
  • Проект — это такой же неймспейс, но созданный и управляемый платформой Deckhouse по шаблону. Шаблон сразу настраивает в нём нужные ограничения и правила (квоты на ресурсы, сетевые политики, права доступа), а платформа следит за его жизненным циклом.

Проще говоря, проект — это «обустроенный» платформой неймспейс. Поэтому пользовательские неймспейсы показываются в половине «Проекты», а служебные неймспейсы платформы — в «Системе».

Как интерфейс распределяет неймспейсы

Платформа хранит все неймспейсы вместе и не делит их на «системные» и «пользовательские». Это деление интерфейс делает сам — по имени неймспейса: служебные имена платформы (например, начинающиеся на kube- или d8-, а также default) он относит к «Системе», все остальные — к «Проектам».

  • Какой неймспейс вы открывали последним, интерфейс запоминает отдельно для каждой половины и в следующий раз возвращает к нему.
  • Если неймспейс не выбран, не существует, удалён или относится к другой половине, интерфейс показывает список для выбора, а не открывает что-то наугад.
  • Если доступных неймспейсов нет (у вас нет прав или их просто нет) — вы увидите поясняющую заглушку.

Почему вы видите одни разделы и не видите другие

Состав разделов у разных пользователей разный — и это нормально. Раздел появляется в меню, только когда выполнены оба условия:

  • Нужный модуль платформы включён. Если модуль выключен, его раздел не показывается.
  • У вас есть права на связанные с разделом данные.

Поэтому вы видите только то, что есть в вашем кластере и разрешено лично вам.

Например, раздел мониторинга появится, только если включён один из модулей мониторинга и у вас есть права его смотреть.

Как устроены экраны

Интерфейс собран из двух видов экранов:

  • Сделанные вручную. Сложные и особенные экраны — обзор кластера, обновления, оператор платформы, формы со своей логикой — разработчики проектируют и программируют отдельно.
  • Сгенерированные автоматически. Для большинства ресурсов Kubernetes экраны (списки, просмотр, формы создания и редактирования) интерфейс строит на лету по OpenAPI-спецификации этого ресурса.

OpenAPI-спецификация — это машинное описание ресурса (какие у него поля, какого они типа, что обязательно), которое сам Kubernetes отдаёт через свой API. Интерфейс читает это описание и по нему рисует форму с подсказками и проверками. Благодаря этому даже новые и нестандартные ресурсы появляются в интерфейсе без отдельной доработки, а рядом с формой у каждого ресурса всегда есть вкладка с «сырым» YAML.

Как учитываются ваши права

Интерфейс не имеет никаких особых полномочий: он действует от вашего имени. Что вам нельзя сделать в платформе напрямую — нельзя и через интерфейс. Права проверяются в нескольких местах:

  • В меню — пункт скрывается, если у вас нет прав на его содержимое.
  • При открытии экрана — если не хватает обязательных прав, вместо экрана открывается страница с понятным сообщением и списком, каких именно прав не хватает.
  • На кнопках и блоках внутри экрана — действия вроде создания, изменения или удаления просто скрываются, если они вам недоступны.

При этом интерфейс не «ломается» от нехватки прав, а аккуратно подстраивается:

  • если у вас есть доступ только к части проектов, он покажет данные по ним, а не выдаст ошибку;
  • вспомогательные данные (квоты, метрики) при нехватке прав просто не показываются, а основной список остаётся рабочим;
  • если что-то недоступно, вы это видите — данные не пропадают молча.

Как интерфейс ведёт себя на небольших экранах

Интерфейс подстраивается под ширину: на узких экранах блоки, которые на широком мониторе стоят рядом, выстраиваются в один столбец. Пока данные подгружаются, на их месте показываются серые заглушки той же высоты — поэтому содержимое не «прыгает» по мере загрузки.