Logo Craft Homelab Docs Контакты Telegram
Radar: лёгкий UI для Kubernetes-кластера в домашней лаборатории Трендовые github проекты в нашем телеграм канале. Подпишись →
26 августа 2026 г.

Как выглядит кластер, если смотреть на него целиком

Для тех, кто держит Kubernetes дома — на мини-серверах, Raspberry Pi или паре старых системников — привычный инструментарий обычно сводится к двум крайностям. Либо голый kubectl и простыни YAML, где сигнал тонет в managedFields и status.conditions, либо тяжёлые десктопные комбайны вроде Lens, требующие сотни мегабайт оперативной памяти и, в некоторых редакциях, аккаунта. Встроенный Kubernetes Dashboard обычно слишком скуден для реальной диагностики.

Radar — open-source UI для Kubernetes, распространяемый как один бинарник на Go. Не требует регистрации, работает бесплатно, потребляет менее 128 МиБ памяти и разворачивается либо локально с проброшенным kubeconfig, либо прямо в кластере через Helm. Для домашней лаборатории с ограниченными ресурсами узла это принципиально другой профиль по сравнению с Electron-приложениями.

Чем Radar отличается от привычных инструментов

МетрикаRadarKubernetes DashboardLensk9s
ТипБинарник / in-clusterIn-cluster web UIElectron-приложениеTUI
RAM< 128 МиБ~100–200 МиБ500+ МиБ~50 МиБ
АккаунтНе нуженНе нуженНужен для части функцийНе нужен
Топология ресурсовЕстьНетПлатноНет
Карта трафикаЕстьНетНетНет
GitOps (FluxCD)ЕстьНетЧастичноНет
MCP-сервер для ИИ-агентовЕстьНетНетНет
ЛицензияApache 2.0Apache 2.0ПроприетарнаяApache 2.0

Radar не заменяет Grafana с дашбордами метрик и не выполняет роль лог-агрегатора. Его задача — за секунды ответить на вопрос «что вообще происходит в кластере прямо сейчас и почему», причём с нулевым порогом входа: не нужно ни настраивать data source, ни разбираться в PromQL, чтобы получить первую пользу.

Установка в домашнем кластере

Для in-cluster варианта достаточно Helm:

helm repo add skyhook https://skyhook-io.github.io/helm-charts
helm repo update

helm upgrade --install radar skyhook/radar --version 1.11.0 \
  -n radar --create-namespace -f radar-values.yaml \
  --wait --timeout 5m

Ключевой момент — RBAC-конфигурация. Чарт создаёт ClusterRole с read-only доступом к стандартным ресурсам и примерно 45 группам CRD (FluxCD, cert-manager, Istio, KEDA, Velero, CloudNativePG и другие), но все потенциально опасные права по умолчанию выключены и включаются явными флагами:

rbac:
  podLogs: true       # просмотр логов подов — включён по умолчанию
  podExec: false       # терминал в подах — включайте осознанно
  secrets: false        # чтение Secrets — выключено по умолчанию
  helm: false            # Helm write-операции — выключено по умолчанию
  portForward: false   # порт-форвардинг для сторонних источников
timeline:
  storage: memory

Для одиночного домашнего узла или маленького кластера на пару нод такой read-only профиль — разумная точка старта: Radar сразу показывает состояние кластера, а write-операции (терминал в подах, чтение секретов, Helm-апгрейды через UI) включаются по мере необходимости, а не по умолчанию.

Если Radar запускается локально, а не в кластере, достаточно указать kubeconfig — бинарник подключится напрямую и ничего дополнительно ставить не нужно.

Что реально помогает в эксплуатации

Issues — ранжированный поток проблем: CrashLoopBackOff, OOMKill, ImagePullBackOff, провалы readiness/liveness проб, зависшие Terminating с указанием finalizer’ов, недокатанные rollout’ы. Все находки сгруппированы по субъекту — одно упавшее приложение превращается в одну строку, а не в двадцать разрозненных событий. Отдельно вычисляются scheduling-проблемы: какая именно taint, affinity или ResourceQuota мешает поду попасть в Running.

Topology — интерактивный граф связей ресурсов в реальном времени, с двумя режимами: иерархия ресурсов (Deployment → ReplicaSet → Pod, плюс ConfigMap’ы, Secrets, HPA) и сетевой путь (Ingress → Service → Pod). Для незнакомого namespace это самый быстрый способ понять, кто на что ссылается, без последовательных kubectl describe.

Timeline — единая лента событий Kubernetes и diff’ов изменений ресурсов (какие именно поля поменялись — реплики, образ, лимиты) в реальном времени через SSE. По умолчанию in-cluster Radar хранит историю в памяти, и рестарт пода её стирает; для многодневного audit-trail включается SQLite на PVC с настраиваемым retention.

Traffic — живая карта сетевого трафика между сервисами. Источник данных Radar определяет автоматически: Hubble (если в кластере используется Cilium), Istio, Caretta или Grafana Beyla — последний даёт eBPF-видимость L4 и HTTP без установки полноценного service mesh, что для домашнего кластера часто избыточно. Дропнутые сетевые потоки отображаются на карте с указанием конкретной NetworkPolicy, которая их заблокировала, — отладка сетевых политик перестаёт быть гаданием.

Checks — 31 проверка best practices по безопасности, надёжности и эффективности: привилегированные контейнеры, отсутствующие probes, теги latest, деплойменты в одну реплику без PodDisruptionBudget, незаданные requests/limits. Каждая находка сопровождается описанием и рекомендацией по исправлению.

Upgrade Impact — отдельная проверка кластера перед апгрейдом control plane: удалённые API текущей версии, несовместимый kubelet-skew, пересекающиеся PDB. Для домашнего кластера, где апгрейд version control plane делается руками и без страховочной сети staging-окружения, это заметно снижает риск сломать кластер посреди апгрейда.

Встроенный MCP-сервер

Отдельная особенность Radar — встроенный сервер Model Context Protocol. ИИ-агенты (Claude, Cursor и другие) получают доступ к кластеру через token-оптимизированные структуры Radar: топологию, health-оценки, дедуплицированные события, отфильтрованные логи — вместо сырого вывода kubectl. Для read-only сценариев предусмотрен отдельный /mcp-readonly endpoint: write-инструменты (restart, scale, sync) в него просто не попадают в каталог, и агент физически не может их вызвать — граница строже, чем обычный отказ RBAC с кодом 403. Для домашнего кластера, где хочется дать ассистенту возможность диагностировать проблемы без риска что-то сломать, это удобная граница по умолчанию.

RBAC-граница, о которой стоит знать

Флаг rbac.viewRBAC заслуживает отдельного внимания: он не даёт возможности редактировать роли (write-глаголов у Radar в RBAC-группах нет вообще ни при каких настройках), но открывает просмотр Roles, RoleBindings, ClusterRoles и ClusterRoleBindings — то есть карту авторизации кластера: какие ServiceAccount’ы обладают wildcard-правами или глаголами escalate/impersonate. Сами секреты этот флаг не раскрывает, но в связке с публично открытым UI без аутентификации превращается в готовую разведку для потенциального атакующего. Если Radar выставлен наружу — через basic auth на ingress или встроенный OIDC-режим — включать viewRBAC разумно; если UI доступен без аутентификации, лучше оставить выключенным.

Итог

Для домашнего Kubernetes-кластера Radar закрывает нишу между «слишком бедным» Dashboard и «слишком тяжёлым» Lens: один бинарник, минимальное потребление памяти, разумные RBAC-настройки по умолчанию и функциональность, которой обычно не хватает именно в моменте инцидента — единый поток проблем, граф зависимостей и лента изменений вместо десятка вкладок kubectl get и kubectl describe.