В прошлой статье про Sextant в конце стоял роадмап на четыре версии: 0.20 — Ingress и события, 0.21 — GitOps-действия и политики, 0.22 — мощности и Cluster API, 0.23 — GPU и AI/ML. Все четыре вышли к 23 октября. За ними последовали 0.24 с алертами, логами из Loki и ссылками в Grafana и 0.25 с OpenShift, OLM, k3s/RKE2 и vcluster. Всего за неделю — 13 релизов, от 0.20.0 до 0.25.5.
Главное в этой неделе — не число функций, а то, что у проекта появилось сообщество. Первые внешние pull request’ы вошли в релизы: фильтры таблиц, настройки боковой панели, исправление для Windows. Идея из внешнего PR сократила память на каждый отслеживаемый объект примерно в пять раз. Часть версии 0.25 — это просьбы читателей: поиск по всем колонкам, вкладки с подами ноды, работа без права на список неймспейсов. Всех поимённо поблагодарю ниже.
Напомню, что это. Sextant — десктопный клиент Kubernetes на Rust и Tauri 2, замена Lens без аккаунта, подписки и телеметрии, со встроенным MCP-сервером для AI-агентов. Он бесплатный и таким останется. Весь его код сгенерирован ИИ (Claude Code): человек ставит задачи, принимает архитектурные решения и делает ревью, а каждое изменение проходит многократное тестирование.
Ниже — дайджест релизов, обзор нового по темам и благодарности.
Дайджест: 13 релизов с 21 по 28 октября
Свежие версии сверху. У каждой функции есть issue с требованиями и страница в вики.
|
Версия |
Дата |
Главное |
|---|---|---|
|
28 октября |
MCP для агентов при ограниченном RBAC: |
|
|
28 октября |
Cmd+W на macOS закрывает вкладку, а не окно; Ctrl+W — везде, кроме терминала; вопрос перед потерей несохранённого YAML |
|
|
0.25.2–0.25.3 |
27–28 октября |
Фильтры в таблицах и исправления по их ревью |
|
0.25.1 |
27 октября |
Графики CPU и памяти кластера из metrics-server, когда нет Prometheus |
|
27 октября |
OpenShift, OLM, vcluster, k3s/RKE2; доступные неймспейсы без права на их список; действия над выделенными строками; поды и ресурсы ноды; память на объект в 5 раз меньше |
|
|
0.24.1 |
26 октября |
Отступы и линии дерева в боковой панели; пустое окно на старых драйверах NVIDIA исправлено |
|
24 октября |
Алерты из Prometheus и Alertmanager, логи удалённых подов из Loki, ссылки в Grafana и трейсы, спокойнее заголовок деталей |
|
|
23 октября |
Dynamic Resource Allocation, NVIDIA GPU Operator, Kueue, JobSet, KubeRay, KServe |
|
|
23 октября |
Vertical Pod Autoscaler, Cluster API, Restart нескольких объектов |
|
|
0.21.1 |
22 октября |
Понятные ошибки exec-плагинов kubeconfig |
|
21 октября |
Pause/Resume Argo Rollouts, Suspend/Resume/Stop Argo Workflows, покрытие сетевыми политиками, Sealed Secrets, Reflector |
|
|
21 октября |
Traefik, Contour, Knative Eventing, коннекторы Strimzi, Caretta в графе трафика |
Обзор нового
Правила те же: интеграции с операторами только читают, раздел в боковой панели появляется, только когда кластер отдаёт его виды, а чего Sextant не может решить по объектам, то он называет «неизвестно».
Платформы и дистрибутивы
OpenShift (0.25). Routes диагностируются так же, как Ingress: до какого звена доходит трафик и где останавливается. Есть DeploymentConfig, BuildConfig и Build с логами build-пода, ImageStream и Project. Действий два — Rollout latest и Start build. Оба сначала спрашивают подтверждение и отправляют ровно то, что отправил бы oc. Встроенные TLS-ключи Route и секреты вебхуков не показываются.
Operator Lifecycle Manager (0.25). Subscriptions, ClusterServiceVersions, InstallPlans и состояние каталогов; подписка объясняет, почему оператор не обновляется. Копии CSV, которые OLM раскладывает по неймспейсам, в проблемах не считаются. Одобрить InstallPlan из Sextant нельзя — это сознательно.
k3s и RKE2 (0.25). Раздел со страницей «Дистрибутив»: версия, роли нод, встроенные компоненты. HelmChart из helm-controller показывает свой Job установки и его логи. Аргументы нод и values чартов маскируются: токены и пароли там встречаются чаще, чем хотелось бы.
vcluster (0.25). Страница «Виртуальные кластеры» и кнопка Connect, которая после подтверждения работает как vcluster connect через port-forward. Kubeconfig виртуального кластера чистится в ядре и до окна не доходит, а запись о кластере живёт, пока жив форвард.
Cluster API (0.22). Цепочка Cluster → MachineDeployments → Machines → инфраструктура, статус в обоих форматах, v1beta1 и v1beta2. Рабочий кластер открывается только по клику.
Наблюдаемость
Алерты (0.24). Страница «Алерты» с сайленсами и секция алертов прямо на объектах, которые называют их метки: под, Deployment, нода и другие, всего 13 видов. Источники — Prometheus, vmalert и Alertmanager, найденные сами и опрашиваемые раз в минуту только через service proxy API-сервера. Sextant ничего не создаёт и не гасит: сайленсы только показываются. Уведомления о горящих алертах включаются отдельно.
Логи удалённых подов из Loki (0.24). Под упал и исчез, а логи нужны — во вкладке логов появилась панель Loki, а в деталях нагрузки — секция «Логи предыдущих подов». Запрос к Loki строит ядро из проверенных имён, свой LogQL из окна не передаётся. За одно чтение — до 24 часов и 5000 строк.
Ссылки в Grafana и трейсы (0.24). В настройках кластера задаются шаблоны ссылок; есть готовые для дашбордов kube-prometheus, Explore с Tempo и Loki и для Jaeger. Кнопка на объекте или на линии графа трафика открывает нужный дашборд в браузере. Сам Sextant по этим адресам не ходит.
Графики без Prometheus (0.25, 0.25.1). Если в кластере только metrics-server, графики CPU и памяти строятся по снятым окном точкам за последний час, пока график на экране. На обзоре кластера — сумма по всем нодам.
Ingress и сеть
-
Traefik (0.20): IngressRoute, Middleware, TraefikService и старая группа
traefik.containo.us. Traefik не пишет статус, поэтому Sextant проверяет ссылки: найдена, отсутствует, в другом неймспейсе. Диагностика идёт по маршруту до самих сервисов. -
Contour (0.20): дерево делегирования HTTPProxy, includes, ошибки и предупреждения самого Contour; невалидные и осиротевшие прокси попадают в проблемы.
-
Knative Eventing (0.20): путь события Source → Broker → Trigger → получатель в деталях; прежний раздел теперь называется Knative Serving.
-
Caretta (0.20) — ещё один источник для графа трафика: только TCP-байты, без ошибок и задержек, и интерфейс так и пишет.
-
Покрытие сетевыми политиками (0.21): вкладка «Покрытие» отвечает, какие поды не изолированы ни одной политикой, отдельно на вход и на выход. В таблице неймспейсов — колонки «Изолирован вход» и «Изолирован выход». Работает для Kubernetes NetworkPolicy, Cilium и Calico.
GitOps и секреты
-
Argo Rollouts: Pause и Resume (0.21) — с тем же патчем, что отправляет плагин
kubectl argo rollouts, после подтверждения и свежего чтения объекта. В 0.22 к ним добавился Restart. -
Argo Workflows: Suspend, Resume, Stop и Terminate (0.21). Retry мы сознательно не сделали: для него нужно перестроить дерево шагов и удалить поды, и это нельзя сделать атомарно. Детали предлагают команду
argo retry. -
Sealed Secrets (0.21): синхронизирован ли SealedSecret, его scope и ошибки контроллера, объяснённые словами. Secret читаются только как метаданные, сертификат для шифрования не читается никогда.
-
Reflector (0.21): колонка «Отражение» у Secret и ConfigMap — копия актуальна, устарела или источник пропал. Сравнение идёт по resourceVersion, а не по значениям; регулярки из аннотаций выполняются в Rust за линейное время.
-
Коннекторы Strimzi (0.20): состояние KafkaConnector и его задач, трассировка упавшей задачи,
autoRestart.
Мощности и AI/ML
-
Vertical Pod Autoscaler (0.22): что получит новый под прямо сейчас — посчитано так же, как считает admission controller. Предупреждение, если VPA и HPA тянут одну нагрузку в разные стороны по CPU или памяти, и проверка, что компоненты VPA вообще стоят. Блок стоит в деталях нагрузки сразу после right-sizing.
-
Dynamic Resource Allocation (0.23): ResourceClaim, DeviceClass, ResourceSlice во всех версиях API, страница «Устройства», блоки устройств у пода и ноды. CEL-выражения показываются, но не вычисляются.
-
NVIDIA GPU Operator (0.23): состояние каждого компонента, MIG и страница «GPU-ноды».
-
Kueue (0.23): квота и занятость ClusterQueue по флейворам, ожидающие Workload с причиной и блок очереди на каждом Job, которым управляет Kueue.
-
JobSet (0.23): причина падения первого Job и число рестартов относительно лимита.
-
KubeRay (0.23): head и группы воркеров, кнопки логов head и воркеров.
-
KServe (0.23): какой serving runtime будет выбран — тем же способом, что и в самом KServe. Учётные данные из URI моделей вырезаются.
Повседневная работа
Здесь больше всего того, о чём просили пользователи.
-
Фильтры в таблицах (0.25.2): кнопка «Фильтры» и фильтр в заголовке каждой колонки — по значению, условию или нескольким условиям сразу. Фильтры запоминаются для каждого кластера и таблицы и попадают в сохранённые виды. Это целиком PR из сообщества.
-
Действия над выделенными строками (0.25): выделили строки — появилась панель с Delete, Restart, Logs, «Скопировать имя» и другими действиями. Если действие подходит не всем, Sextant скажет, какие объекты пропустит и почему. Массовое удаление идёт по одному объекту с uid в предусловии и без повторов, а больше 20 объектов нужно подтвердить, введя их число.
-
Restart нескольких объектов (0.22): по одному за раз; ReplicaSet перезапускается через своего владельца, под — удалением, и только если у него есть контроллер, который его вернёт.
-
Поиск по всем колонкам, вкладки «Поды» и «Ресурсы» у ноды (0.25): поиск теперь ищет по всему, что показано в таблице. У ноды появились её поды и распределённые ресурсы как в
kubectl describe node. -
Работа без права на список неймспейсов (0.25): частая история в крупных компаниях — у разработчика есть доступ к паре неймспейсов, но не к их списку. Теперь «Все неймспейсы» означает «все доступные», их можно дописать вручную, а вместо ошибки показывается экран «Нет доступа» с кнопкой «Всё равно показать».
-
Мелочи: Cmd+W на macOS закрывает вкладку, а не всё окно, и спрашивает перед потерей несохранённого YAML (0.25.4); отступы и линии дерева в боковой панели (0.24.1); более спокойный заголовок деталей с меню «Действия» (0.24); на Windows больше не мелькают консольные окна Helm (0.25); исправлено пустое окно на драйверах NVIDIA до версии 495 (0.24.1).
Под капотом
Память на отслеживаемый объект — в пять раз меньше (0.25). В первой статье я писал, что на больших кластерах Sextant проигрывает по приросту памяти: ядро хранило объекты как JSON-деревья. Теперь они хранятся компактно, и на тесте с подами по ~2,5 КБ вышло так:
|
|
До |
После |
|---|---|---|
|
Память на один объект |
26,0 КБ |
5,2 КБ |
|
Хранимые объекты, 50 000 подов |
481 МБ |
127,5 МБ |
|
Полный список, 50 000 подов |
9,0 с |
10,3 с |
Честно о цене: полный список стал чуть медленнее, а первые строки появляются через 94 мс вместо 77. Замер сделан в тесте на debug-сборке; повторное сравнение с Freelens и Lens на релизных сборках ещё впереди. Идея — из внешнего PR, об этом ниже.
Ошибки exec-плагинов (0.21.1, 0.22). Если kubeconfig вызывает плагин авторизации (aws, gcloud, yc и так далее), а тот не находится или падает, Sextant теперь пишет, какого пути нет и как это исправить, и помечает такой кластер ещё до подключения. Вывод плагина показывается обрезанным и замаскированным и не попадает ни в логи, ни в уведомления.
AI-агенты при ограниченном RBAC (0.25.5). Версия выросла из одного обсуждения: пользователь подключил агента к кластеру, где у него самого доступ только к паре неймспейсов, и подробно расписал, где MCP мешает. Каждый пункт стал отдельным issue, и все пять вошли в версию:
-
новый инструмент
get_accessпоказывает агенту правила, которые для него задал пользователь, и известные неймспейсы — без запросов к API-серверу и без новых прав; -
если список по всему кластеру запрещён, инструменты проходят по известным неймспейсам и говорят, какие из них отказали;
-
get_permissionsможет показать фактические права пользователя, но только после отдельного включения в настройках кластера и в пределах правил самого агента; -
list_resourcesумеет отдавать только нужные поля или краткую сводку — контекст агента не резиновый; -
исправлено падение
get_problems, а источник, который не удалось прочитать, теперь помечен как непроверенный, а не пропадает молча.
Инструментов стало 36. Остальное новое за неделю — OpenShift, Argo, массовое удаление, vcluster — доступно только в окне, а новые категории проблем агенту не отдаются: в них бывают тексты из кластера, которые никто не проверял.
Неделя в цифрах
За неделю вышло 13 релизов и 22 новых раздела функций. Код по-прежнему целиком пишет Claude Code, а путь каждой функции не поменялся: issue с требованиями, ADR с границами, код вместе с тестами, проверки на kind-кластере и CI на трёх ОС, ревью.
|
|
0.19 |
0.25.5 |
|---|---|---|
|
Тесты на Rust |
1429 |
1641 |
|
Тесты vitest |
3092 |
4166 |
|
ADR (архитектурные решения) |
105 |
129 |
|
Звёзды на GitHub |
18 |
30 |
Новых строк за неделю — около 118 тысяч: 49 тысяч TypeScript вместе с тестами, 12 тысяч Rust, 7 тысяч фикстур из реальных манифестов операторов и 47 тысяч — переводы на 14 языков.
Что не вошло или вошло иначе, чем планировалось:
-
Retry для Argo Workflows, Restart и Rollback для DeploymentConfig — осознанно отложены: безопасно и атомарно их сделать нельзя.
-
Пакета для winget всё ещё нет (#217); Homebrew и Scoop обновляются с каждым релизом.
-
Открыты четыре известных бага: учётные данные в URI внутри сообщений условий ещё не вырезаются (#259), GPU Operator показывает несуществующий в новых версиях компонент (#260), exec-плагины могут мелькнуть консолью на Windows (#288), один нестабильный тест (#290).
Спасибо
Эта неделя — первая, когда в Sextant вошли чужие pull request’ы и целые функции по просьбам пользователей. Огромное спасибо всем, кто не прошёл мимо.
Контрибьюторам:
-
@VasiliyIsaichkin — три принятых PR за неделю: отступы и линии дерева в боковой панели (#283, 0.24.1), консольные окна Helm на Windows больше не мелькают (#287, 0.25) и фильтры в таблицах (#293, 0.25.2). И ещё три issue, из которых эти PR выросли.
-
@philyuchkoff — PR #203 с компактным хранением объектов. В исходном виде он не слит, но его идея стала основой #284, где он указан соавтором, — тот самый пятикратный выигрыш по памяти. А ещё раньше он прислал первый внешний PR проекта — поддержку
proxy-url.
Тем, кто присылал баги и идеи:
-
@mrlioncub — пустое окно на старых драйверах NVIDIA (#278): исправлено в 0.24.1, и он сам подтвердил, что заработало. Раньше именно он нашёл проблему с
proxy-url. -
@RouR — поиск по всем колонкам, поды и ресурсы ноды, графики из metrics-server (#279, #280): всё вошло в 0.25.
-
@karabasBaRaBaS-1276 — работа без права на список неймспейсов (обсуждение #281): вошло в 0.25. Его подробный отчёт про MCP для агентов при ограниченном RBAC (#296) целиком стал версией 0.25.5: пять пунктов — пять issue, все сделаны.
-
@nd4y — обрезанное меню на Windows, один из первых багов от пользователей.
И спасибо всем, кто писал в комментариях к прошлым статьям, спорил, сравнивал с другими инструментами и ставил звёзды: именно такие комментарии превращаются в роадмап. Если я кого-то забыл, напишите — допишу.
Что дальше и как попробовать
Следующие две версии уже запланированы:
Планы меняются по вашим запросам — эта неделя тому пример. Идеи пишите в Discussions → Ideas, баги — в issues, а PR всегда ждём.
Как поставить:
brew install --cask friendsofkubernetes/sextant/sextant # macOSscoop bucket add sextant https://github.com/FriendsOfKubernetes/sextant-scoopscoop install sextant/sextant # Windows
Или скачайте .deb, .rpm или .AppImage (x86_64 и arm64), .dmg или .msi из последнего релиза. Установленный из AppImage, .dmg или .msi Sextant обновляется сам. Документация — в вики. Если проект пригодился, поставьте звезду на GitHub: так его найдут другие.
ссылка на оригинал статьи https://habr.com/ru/articles/1100782/