Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки
Эта страница простыми словами объясняет, как устроен веб-интерфейс: почему он делится на две части, чем проект отличается от неймспейса, откуда интерфейс знает, какие разделы вам показывать, как он учитывает ваши права и как ведёт себя на небольших экранах.
Деление на Систему и Проекты
В компаниях управление кластером и работа в нём часто лежат на разных людях: платформенные инженеры настраивают и обслуживают саму платформу, а продуктовые команды пользуются ею для своих приложений, не администрируя кластер. Интерфейс повторяет это разделение труда, чтобы каждый работал в своей части и не отвлекался на чужую:
| Половина | Что это | Кто здесь работает |
|---|---|---|
| Система | Администрирование самой платформы | Платформенные инженеры и администраторы |
| Проекты | Использование платформы для приложений | Продуктовые команды и пользователи |
Деление строгое: то, что относится к платформе, нельзя открыть в «Проектах», и наоборот. Между половинами переключаются вручную — селектором в левом верхнем углу; сам по себе интерфейс вас туда-сюда не перебрасывает.
Чем проект отличается от неймспейса
Это почти одно и то же, и вот в чём разница:
- Неймспейс — стандартное понятие Kubernetes: «папка», в которой сгруппированы ресурсы одного приложения или команды.
- Проект — это такой же неймспейс, но созданный и управляемый платформой Deckhouse по шаблону. Шаблон сразу настраивает в нём нужные ограничения и правила (квоты на ресурсы, сетевые политики, права доступа), а платформа следит за его жизненным циклом.
Проще говоря, проект — это «обустроенный» платформой неймспейс. Поэтому пользовательские неймспейсы показываются в половине «Проекты», а служебные неймспейсы платформы — в «Системе».
Как интерфейс распределяет неймспейсы
Платформа хранит все неймспейсы вместе и не делит их на «системные» и
«пользовательские». Это деление интерфейс делает сам — по имени неймспейса:
служебные имена платформы (например, начинающиеся на kube- или d8-, а также
default) он относит к «Системе», все остальные — к «Проектам».
- Какой неймспейс вы открывали последним, интерфейс запоминает отдельно для каждой половины и в следующий раз возвращает к нему.
- Если неймспейс не выбран, не существует, удалён или относится к другой половине, интерфейс показывает список для выбора, а не открывает что-то наугад.
- Если доступных неймспейсов нет (у вас нет прав или их просто нет) — вы увидите поясняющую заглушку.
Почему вы видите одни разделы и не видите другие
Состав разделов у разных пользователей разный — и это нормально. Раздел появляется в меню, только когда выполнены оба условия:
- Нужный модуль платформы включён. Если модуль выключен, его раздел не показывается.
- У вас есть права на связанные с разделом данные.
Поэтому вы видите только то, что есть в вашем кластере и разрешено лично вам.
Например, раздел мониторинга появится, только если включён один из модулей мониторинга и у вас есть права его смотреть.
Как устроены экраны
Интерфейс собран из двух видов экранов:
- Сделанные вручную. Сложные и особенные экраны — обзор кластера, обновления, оператор платформы, формы со своей логикой — разработчики проектируют и программируют отдельно.
- Сгенерированные автоматически. Для большинства ресурсов Kubernetes экраны (списки, просмотр, формы создания и редактирования) интерфейс строит на лету по OpenAPI-спецификации этого ресурса.
OpenAPI-спецификация — это машинное описание ресурса (какие у него поля, какого они типа, что обязательно), которое сам Kubernetes отдаёт через свой API. Интерфейс читает это описание и по нему рисует форму с подсказками и проверками. Благодаря этому даже новые и нестандартные ресурсы появляются в интерфейсе без отдельной доработки, а рядом с формой у каждого ресурса всегда есть вкладка с «сырым» YAML.
Как учитываются ваши права
Интерфейс не имеет никаких особых полномочий: он действует от вашего имени. Что вам нельзя сделать в платформе напрямую — нельзя и через интерфейс. Права проверяются в нескольких местах:
- В меню — пункт скрывается, если у вас нет прав на его содержимое.
- При открытии экрана — если не хватает обязательных прав, вместо экрана открывается страница с понятным сообщением и списком, каких именно прав не хватает.
- На кнопках и блоках внутри экрана — действия вроде создания, изменения или удаления просто скрываются, если они вам недоступны.
При этом интерфейс не «ломается» от нехватки прав, а аккуратно подстраивается:
- если у вас есть доступ только к части проектов, он покажет данные по ним, а не выдаст ошибку;
- вспомогательные данные (квоты, метрики) при нехватке прав просто не показываются, а основной список остаётся рабочим;
- если что-то недоступно, вы это видите — данные не пропадают молча.
Как интерфейс ведёт себя на небольших экранах
Интерфейс подстраивается под ширину: на узких экранах блоки, которые на широком мониторе стоят рядом, выстраиваются в один столбец. Пока данные подгружаются, на их месте показываются серые заглушки той же высоты — поэтому содержимое не «прыгает» по мере загрузки.