EnglishРусский Map

lfk

title
lfk
type
toolbox
summary
TUI для Kubernetes с трёхколоночным представлением в стиле yazi и навигацией по владельцам вместо списков k9s
tags
golang, kubernetes, tui, bubbletea, watchlist
language
Go
license
Apache-2.0
created
2026-04-27
updated
2026-04-27
lang
ru
translation_of
lfk
source_updated
2026-04-27
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

lfk (Lightning Fast Kubernetes navigator) - это TUI для Kubernetes на базе Bubbletea, заменяющий модель единого списка k9s на вдохновлённое yazi трёхколоночное представление Миллера. Левая колонка - родительский уровень, средняя - текущий выбор, правая - предпросмотр YAML или подробностей; навигация спускается по единой иерархии: Cluster -> Resource Type (grouped) -> Resource -> Owned Resources -> Containers. Namespace'ы не служат уровнем навигации; они вынесены в индикатор в правом верхнем углу и переключаются через \.

Внесён в watchlist - репозиторию шесть недель (создан 2026-03-15), один автор (janosmiko), версия до 1.0 (v0.9.30 на момент ingest'а), 320 звёзд, но 30 релизов за шесть недель и активный CI с SonarCloud + codecov. Проект выглядит зрелым; номер версии - пока нет.

Чем на самом деле отличается от k9s

Главная возможность - owner-based навигация. Выбор Deployment показывает его Pod'ы (разрешаемые через ReplicaSet'ы, в плоском виде); CronJob показывает свои Job'ы; Service - Pod'ы, подходящие под его селектор; ArgoCD Application - управляемые им ресурсы (извлечённые из статуса или меток); релиз Helm - ресурсы по метке app.kubernetes.io/instance. Не нужно выводить "все pod'ы, а затем фильтровать по владельцу" - вы просто заходите во владельца. Клавиша o переходит в обратную сторону: от ресурса к его контроллеру.

Типы ресурсов сгруппированы семантически: Workloads, Networking, Config, Storage, ArgoCD, Helm, Access Control, Cluster, Custom Resources, плюс Dashboards. CRD автоматически группируются по API group (argoproj.io, longhorn.io, networking.istio.io); часто используемые группы можно закрепить клавишей p (с привязкой к контексту). Редко используемые типы (внутренности CSI, admission webhook'и, APF, lease'ы, runtime class'ы) по умолчанию скрыты и открываются в разделе "Advanced" по H.

Что встроено, а что вызывает внешние утилиты

Единственная жёсткая зависимость - kubectl. Опционально: helm для управления релизами, trivy для сканирования образов на уязвимости. Всё остальное - KEDA pause/unpause, External Secrets force-refresh, Argo Workflows submit/suspend/stop/resubmit, ArgoCD sync/terminate/refresh, cert-manager, FluxCD, изменение размера PVC - обращается к Kubernetes API напрямую. Никаких отдельных CLI под каждый инструмент.

Встроенный PTY для exec/shell продолжает работать при переключении вкладок (в TUI-инструментах это редкость - большинство убивает PTY при смене вкладки). Встроенный просмотрщик логов продолжает стриминг при переходе между init-контейнерами, оставаясь подключённым по мере завершения одного и старта следующего.

Проблема с Secret и ленивая загрузка

В кластере с большим числом релизов Helm или объёмными TLS-секретами листинг ресурса Secrets может передавать десятки мегабайт, поскольку k8s возвращает полные тела объектов при вызове list. Опция secret_lazy_loading: true в конфиге переключает получение только метаданных, откладывая декодирование значений до наведения курсора (кэшируются после первого запроса). Компромисс: колонка Type пропадает из списка, так как запрос только метаданных её не заполняет. Это реальная эксплуатационная проблема - из тех, с которыми сталкиваешься только при работе с настоящим кластером.

Оформление и темы

В комплекте идёт более 460 цветовых схем из Ghostty (Tokyonight, Catppuccin, Dracula, Nord, Rose Pine, Gruvbox, ...). T открывает интерактивное меню выбора. Автоматическое переключение тёмной/светлой темы ОС использует CSI 996/2031 (поддерживается в Ghostty, kitty >=0.27, Contour) - colorscheme: "dark:catppuccin-mocha,light:catppuccin-latte", и приложение переключается при смене системной темы. Прозрачный фон включается галочкой. В отличие от k9s с его "отредактируйте YAML-файл и перезапустите".

Режим отображения иконок по умолчанию auto с явным откатом к unicode / nerdfont (Material Design Icons) / simple (ASCII-метки) / emoji / none. Переопределяется переменной окружения LFK_ICONS.

Командная строка

: открывает командную строку с выпадающим вертикальным автодополнением. Четыре пересекающихся синтаксиса:

  • Быстрый переход к ресурсам: :pod, :dep, :pvc - сокращения с нечётким поиском, настраиваются
  • Встроенные команды: :ns, :ctx, :set, :sort, :export
  • Проброс в kubectl: :k get pod или :kubectl ... с автодополнением флагов и namespace'ов
  • Shell: :! cmd

Поиск и фильтрация поддерживают три режима, определяемых автоматически по вводу: подстрока, regex (автоопределение), нечёткий поиск (префикс ~), точное совпадение (префикс \). Множественный выбор через Space, выбор диапазона через Ctrl+Space, массовое удаление/масштабирование/перезапуск и массовый sync/refresh для ArgoCD доступны из меню действий.

Конфигурация

~/.config/lfk/config.yaml. Переопределяется через -c /path/to/config.yaml. Флаги CLI: --context, -n (можно указывать несколько раз для нескольких namespace'ов), --kubeconfig, --no-mouse, --no-color (также учитывает NO_COLOR=1), --watch-interval (значения длительности в формате Go, ограничены диапазоном [500ms, 10m]).

Загрузка объединённого kubeconfig: читает ~/.kube/config, рекурсивно каждый файл в ~/.kube/config.d/* (симлинки разрешаются) и переменную окружения KUBECONFIG. Последний контекст, namespace и ресурс сохраняются между перезапусками; явные флаги --context / -n игнорируют сохранённую сессию.

Пользовательские действия - первоклассный механизм: настройте shell-команды для каждого типа ресурсов в конфиге, и они появятся в меню действий (x).

Установка

brew install janosmiko/tap/lfk           # macOS / Linux Homebrew
nix profile install github:janosmiko/lfk # Nix flake (requires flakes)
go install github.com/janosmiko/lfk@latest

Nightly-tap (janosmiko/tap/lfk-nightly) и Docker-теги janosmiko/lfk:nightly[-YYYYMMDD] отслеживают main. Для работы через Docker требуются -v ~/.kube:/home/lfk/.kube:ro и --net=host, чтобы работал port-forwarding.

Статус и сигналы для повторной проверки (следующая: 2026-07-26)

  • Создан: 2026-03-15 (~6 недель на момент ingest'а)
  • Звёзды: 320
  • Релизы: 30 за шесть недель (последний v0.9.30, 2026-04-27)
  • Открытые issues: 3
  • Один автор, Apache-2.0
  • В README нет упоминаний о статусе alpha; SonarCloud security rating + codecov + Go Report Card подключены к CI

Сигналы для повторной проверки на 2026-07-26: вышла ли версия v1.0? Сохранился ли темп релизов не реже раза в месяц? Появился ли второй значимый контрибьютор помимо janosmiko? Написал ли кто-то серьёзное сравнение с k9s? Появились ли баг-репорты из реальной эксплуатации по ленивой загрузке секретов и массовым операциям ArgoCD (признак того, что утилиту используют на больших кластерах)? Остаются ли тесты и линтеры зелёными в CI или пришли в упадок?

Repo: https://github.com/janosmiko/lfk - 320 звёзд, Apache-2.0.