Инфраструктурный аудит кластера Kubernetes часто напоминает сложную операцию: чтобы просто узнать, какие контейнеры работают с привилегиями root или где забыли выставить лимиты CPU, приходится согласовывать установку тяжелых операторов, запрашивать права на создание пользовательских ресурсов (CRD) и выделять вычислительные ресурсы под фоновые контроллеры. Если же инженеры выбирают консольные сканеры вроде kube-bench или Popeye, они неизбежно тонут в терминальном выводе, вручную сопоставляя имена ресурсов с объектами в веб-интерфейсе.
Инженер Ричард Хупер (Richard Hooper, автор проекта Pixel Robots) предложил элегантный выход, выпустив официальный плагин kubebuddy-headlamp-plugin версии 0.1.0 для открытого дашборда Headlamp. Сам Headlamp развивается под эгидой CNCF и выбран рабочей группой Kubernetes SIG UI в качестве современной вендор-независимой альтернативы классическому Kubernetes Dashboard. Его ключевое преимущество — модульная архитектура на React и TypeScript, позволяющая запускать расширения непосредственно в контексте браузера пользователя.
Нулевой след в кластере и клиентский конвейер проверок
Плагин KubeBuddy переносит полный каталог аудиторских правил одноименной утилиты версии v0.0.31 на сторону веб-клиента. В кластере не появляется ни единого нового пода, фонового демона или кастомного ресурса CRD. Все запросы к Kubernetes API проходят через штатное прокси-соединение Headlamp, используя действующий токен и права учетной записи инженера (RBAC).
Если у специалиста есть права на чтение конфигураций в рабочем пространстве, плагин последовательно опрашивает API, сопоставляет манифесты с эталонными правилами гигиены и формирует интерактивный отчет прямо на экране.
Проверки охватывают ключевые плоскости кластера: от базового контекста безопасности (securityContext, запуск от root, флаг readOnlyRootFilesystem) и сетевых политик до параметров масштабирования, отсутствия проб жизнеспособности (livenessProbe) и корректности RBAC-ролей. По завершении сканирования инженер видит структурированный список находок по уровням риска (Critical, Warning, Info). Главное удобство — прямая связь: клик по карточке предупреждения мгновенно переносит пользователя на страницу конкретного Deployment или Service внутри Headlamp.
Подключение плагина и настройка правил аудита
При запуске Headlamp внутри кластера регистрация плагина осуществляется через values-манифест Helm в секции pluginsManager:
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 плагин автоматически подтягивается из Artifact Hub:
helm upgrade --install headlamp headlamp/headlamp -n headlamp --values values.yaml
Для адаптации проверок под корпоративные стандарты плагин поддерживает файл kubebuddy-config.yaml. В нем можно отключить избыточный шум в системных пространствах имен или скорректировать строгость правил:
version: "1.0"
settings:
failOnSeverity: "critical"
ignoreNamespaces:
- kube-system
- kube-public
- headlamp
checks:
security:
privilegedContainers:
enabled: true
severity: "critical"
readOnlyRootFilesystem:
enabled: true
severity: "warning"
workloads:
livenessProbeMissing:
enabled: true
severity: "warning"
cpuLimitsMissing:
enabled: true
severity: "info"
Когда безагентный подход уступает специализированным сканерам
У безагентной клиентской архитектуры есть свои естественные границы. Плагин работает только пока открыта вкладка браузера: закрытие страницы прерывает сканирование. Кроме того, плагин изолирован внутри браузерной песочницы: он не имеет прямого доступа к API облачных провайдеров (AKS или GKE), не собирает метрики Prometheus и не заменяет контроллеры превентивного допуска вроде Kyverno или OPA Gatekeeper.
KubeBuddy для Headlamp — отличный инструмент для оперативного экспресс-аудита и повседневного траблшутинга инженерами. Он экономит часы на согласование доступов и позволяет быстро навести порядок в манифестах без дополнительной нагрузки на кластерные ноды.
