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.