Я давно постепенно расширял KubeBuddy за пределы интерфейса командной строки. На этой неделе я выпустил два инструмента, которые будут по-настоящему полезны тем, кто использует Headlamp в качестве дашборда Kubernetes — а вы должны его использовать. Первый — плагин KubeBuddy для Headlamp: он привносит весь каталог проверок KubeBuddy (за исключением лучших практик облачных провайдеров) прямо в Headlamp, не затрагивая конфигурацию кластера. Второй — Headlamp Theme Builder: плагин для Headlamp и браузерный инструмент дизайна, который за несколько минут превращает корпоративные цвета бренда в готовый к установке плагин-тему для Headlamp.
Плагин KubeBuddy появился из простого раздражения. Я хотел сканировать кластер, не выходя из Headlamp, не устанавливая CLI и не переключаясь между дашбордом и терминалом. Theme Builder родился иначе. Сначала я хотел сделать тему в фирменном стиле для своей работы, а потом задумался о том, как инженеры любят настраивать свои инструменты под себя. Если Oh My Posh нас чему-то и научил, так это тому, что люди готовы тратить время, чтобы всё выглядело именно так, как они хотят. Так почему бы не сделать настройку темы Headlamp такой же простой?
Оба инструмента доступны прямо сейчас. Вот что они умеют — но сначала небольшое введение.
Что такое Headlamp
Headlamp — это открытый расширяемый дашборд Kubernetes, изначально созданный компанией Kinvolk, которая теперь входит в состав Microsoft. Проект передан в CNCF в статусе sandbox и является предпочтительным дашбордом для Kubernetes SIG UI. Headlamp предоставляет удобный интерфейс для просмотра и управления ресурсами Kubernetes в нескольких кластерах, и работает как десктопное приложение, внутри кластера или через локальный прокси. Главное отличие от стандартного Kubernetes Dashboard — система плагинов. Headlamp можно расширять дополнительными представлениями, инструментами и функциональностью, а поскольку проект открытый, любой может создать и опубликовать плагин. Именно это представляют собой оба новых выпуска.
Плагин KubeBuddy для Headlamp
Плагин KubeBuddy для Headlamp выполняет проверки Kubernetes на стороне браузера (browser-side), используя данные о ресурсах, которые Headlamp уже умеет читать. В кластер ничего разворачивать не нужно: никаких операторов, агентов или CRD. Такие инструменты, как Trivy Operator и Kubescape, требуют компонентов внутри кластера. KubeBuddy работает полностью на основе того, что Headlamp уже видит.
Этот первый релиз поставляется в составе KubeBuddy v0.0.31 и включает все проверки Kubernetes из этой версии. Версия плагина и версия каталога проверок KubeBuddy фиксируются отдельно, поэтому всегда понятно, какие именно проверки выполняются.
Что проверяет плагин
Каталог проверок охватывает рабочие нагрузки (workloads), поды, узлы, сетевую часть, хранилище, пространства имён, гигиену конфигурации, безопасность, RBAC и события. Это зеркало существующего каталога проверок KubeBuddy для Kubernetes: если вы работали с CLI, результаты будут знакомы.
После сканирования вы получаете итоговую оценку с количеством находок, разбитых по уровням серьёзности: критические, предупреждения и информационные. Находки сгруппированы по карточкам в разрезе категорий, каждая из которых содержит рекомендацию и прямую ссылку на затронутый ресурс в Headlamp. Можно фильтровать по пространству имён, идентификатору проверки и уровню серьёзности, а также экспортировать полные результаты в CSV или JSON. Плагин также поддерживает импорт и экспорт файла kubebuddy-config.yaml для настроек, которые он может применять на стороне браузера.
В процессе тестирования я обратил внимание на то, как хорошо работают ссылки на ресурсы. Переход из находки сразу открывает соответствующую страницу ресурса в Headlamp, что делает разбор проблем значительно быстрее по сравнению с сопоставлением отчёта CLI с отдельным представлением дашборда.
Что плагин не включает
Ограничение браузерной среды выполнения — важный момент, который стоит понять сразу. Плагин не может выполнять проверки AKS или GKE, требующие обращений к API Azure или Google Cloud, проверки на основе Prometheus или что-либо, зависящее от выполнения kubectl или PowerShell. Для этого по-прежнему нужен CLI. Кроме того, сканирование прерывается, если во время его выполнения перейти на другую страницу или обновить её — это не инструмент фонового мониторинга, а осознанное сканирование по требованию, пока вы активно работаете с кластером.
Для большинства сценариев аудита и ревью этого вполне достаточно. Для непрерывного мониторинга соответствия требованиям по-прежнему лучше использовать CLI в составе пайплайна.
Установка
Проще всего установить плагин через каталог плагинов Headlamp Desktop. Откройте Headlamp Desktop, перейдите в Plugin Catalog, найдите KubeBuddy и нажмите Install. При необходимости перезапустите приложение, после чего откройте KubeBuddy из боковой панели кластера.
Для установки Headlamp внутри кластера с использованием менеджера плагинов добавьте следующее в значения Helm:
config:
watchPlugins: true
pluginsManager:
enabled: true
configContent: |
plugins:
- name: kubebuddy-headlamp-plugin
source: https://artifacthub.io/packages/headlamp/kubebuddy/kubebuddy-headlamp-plugin
version: 0.1.0
installOptions:
parallel: true
maxConcurrent: 2
Примените обновлённые значения командой helm upgrade, дождитесь синхронизации менеджера плагинов — и KubeBuddy автоматически появится в боковой панели.
Если вы предпочитаете однострочную команду, можно воспользоваться Headlamp plugin CLI:
npx @kinvolk/headlamp-plugin install https://artifacthub.io/packages/headlamp/kubebuddy/kubebuddy-headlamp-plugin
Headlamp Theme Builder
Второй релиз — инструмент совсем другого рода. Headlamp Theme Builder — это браузерный инструмент дизайна, позволяющий создать тему для Headlamp с живым предпросмотром и сразу скачать готовый к установке zip-архив плагина. Никаких локальных шагов сборки, никакого окружения Node.
Задача понятна. Если вы хотите, чтобы Headlamp соответствовал фирменным цветам вашей команды, или вам нужно сделать white-label-дашборд для клиентской среды, конструктор устраняет необходимость вручную писать каркас плагина и разбираться в том, какие токены MUI за что отвечают.
Как работает конструктор
Вы настраиваете цвета в левой панели и сразу видите их применение в живом предпросмотре в стиле Headlamp справа: навигационная панель, боковое меню, карточки и кнопки. Светлый и тёмный варианты редактируются независимо, а для представлений логов предусмотрены отдельные настройки цветов терминала и ANSI.
Библиотека тем — полезное дополнение. Можно загрузить встроенные публичные темы, импортировать тему из локального JSON-файла или подтянуть её с любого публичного URL, поддерживающего CORS. Функция создания ссылки для совместного доступа особенно удобна при командной работе: она кодирует текущее состояние светлой и тёмной темы в URL, который можно передать коллеге без экспорта файла.
Перед скачиванием вы задаёте имя плагина, версию, описание и автора. Если загрузить логотип, он будет встроен в сгенерированный плагин и автоматически зарегистрирован в Headlamp.
Установка сгенерированного плагина
Скачанный zip-архив готов к использованию без какого-либо шага сборки. Распакуйте его и скопируйте папку плагина в директорию пользовательских плагинов Headlamp.
В Windows это %APPDATA%\Headlamp\Config\user-plugins\<plugin-name>\. В Linux или macOS — ~/.config/Headlamp/Config/user-plugins/<plugin-name>/. Перезапустите Headlamp и выберите свою тему в разделе Settings > General > Theme.
Попробуйте сами
Вот и всё о плагине KubeBuddy для Headlamp и Headlamp Theme Builder. Два разных инструмента, оба созданы для того, чтобы Headlamp был удобнее в повседневной работе. Один даёт структурированное представление о том, что реально происходит в вашем кластере, другой добавляет ему индивидуальность.
Оба доступны прямо сейчас, оба бесплатны, и ни один не требует ничего сложного для запуска. Попробуйте и расскажите, как всё прошло. Если что-то работает не так, как ожидалось, или есть идеи по улучшению — создайте issue на GitHub или напишите мне напрямую. Мне всегда интересно узнать, как люди используют эти инструменты и что могло бы сделать их лучше.