kubecfg: менеджер kubeconfig с TUI и guard-сессиями

kubecfg — менеджер kubeconfig для Kubernetes, ориентированный на тех, кто часто переключается между контекстами и которым нужно больше, чем тонкая обёртка над kubectl config.

Инструмент предоставляет быстрое переключение контекстов и пространств имён (namespace), группы контекстов, проверку состояния кластеров и защищённые сессии Kubernetes, которые могут маршрутизировать запросы через локальный прокси с поддержкой политик.

Главное меню текстового интерфейса kubecfg

Ключевые возможности

  • Интерактивный TUI (текстовый интерфейс пользователя) для просмотра и переключения контекстов.

  • Прямые CLI-команды для работы с контекстами, пространствами имён, слиянием, экспортом, валидацией и восстановлением из резервных копий.

  • Опциональная интеграция с fzf для выбора контекста и пространства имён.

  • Переключение на предыдущий контекст через kubecfg use -.

  • Группы контекстов, хранящиеся в ~/.kubecfg/groups.yaml.

  • Проверка состояния всех контекстов или отдельного контекста с выводом в виде таблицы, JSON или YAML.

  • Защищённые (guard) сессии со сгенерированными kubeconfig-файлами, TTL, журналами аудита, профилями политик и автоматической активацией из групп, привязанных к политике.

  • Автодополнение для Bash, Zsh, Fish и PowerShell.

Скриншоты

Выбор контекста

Экран выбора контекста в kubecfg

Список контекстов

Вывод команды kubecfg list

Профили политик

Вывод команды kubecfg policy list

Команды Guard

Справка по командам kubecfg guard

Справка

Общая справка kubecfg

kubecfg vs kubectx

kubectx отлично справляется с быстрым переключением контекстов. kubecfg ориентирован на более широкий круг задач по управлению kubeconfig:

  • kubecfg use - — переключение на предыдущий контекст в стиле kubectx.

  • kubecfg ns — смена пространства имён без необходимости писать kubectl config set-context.

  • kubecfg group — организация связанных контекстов по окружению или команде.

  • kubecfg status — проверка доступности кластера перед переключением на устаревший или недоступный узел.

  • kubecfg guard и kubecfg policy — временный, полностью журналируемый режим доступа к рискованным кластерам.

Установка

Go

go install github.com/kadirbelkuyu/kubecfg@latest

Для установки конкретной версии v0.2.0 после публикации тега:

go install github.com/kadirbelkuyu/kubecfg@v0.2.0

Homebrew

brew tap kadirbelkuyu/tap
brew install kadirbelkuyu/tap/kubecfg

GitHub Releases

Скачайте архив для своей ОС и архитектуры со страницы:

https://github.com/kadirbelkuyu/kubecfg/releases

Архивы релизов включают бинарный файл kubecfg, README.md, LICENSE и контрольные суммы SHA-256.

Сборка из исходников

git clone https://github.com/kadirbelkuyu/kubecfg.git
cd kubecfg
go build -o kubecfg .
./kubecfg --help

Krew

Пакет для Krew в данном репозитории не настроен для версии v0.2.0.

Автодополнение в оболочке

# bash
echo 'eval "$(kubecfg completion bash)"' >> ~/.bashrc

# zsh
echo 'source <(kubecfg completion zsh)' >> ~/.zshrc

# fish
kubecfg completion fish | source

Инструкции для PowerShell, менеджеров плагинов и советы по устранению неполадок находятся в docs/shell-completion.md.

Опциональная интеграция с fzf

Если fzf установлен, kubecfg автоматически использует его для выбора контекста и пространства имён.

export KUBECFG_IGNORE_FZF=1

Переменная KUBECFG_IGNORE_FZF принудительно включает встроенный интерфейс выбора.

Быстрый старт

Приведённые команды предполагают, что kubeconfig доступен по пути ~/.kube/config или через переменную KUBECONFIG.

kubecfg list
kubecfg current
kubecfg use
kubecfg ns kube-system
kubecfg status

Для работы с конкретным kubeconfig-файлом:

kubecfg --kubeconfig ./config list

Чтобы постоянно использовать определённый kubeconfig-файл:

kubecfg source dir add ~/team-kubeconfigs
kubecfg source list
kubecfg source use ~/team-kubeconfigs/prod.yaml
kubecfg source current

Активный источник хранится в ~/.kubecfg/config.yaml в поле kubeconfig_sources.active. Директории, сканируемые для поиска kubeconfig-файлов, перечислены в kubeconfig_sources.dirs. В TUI также есть экран Kubeconfig Sources для переключения активного файла без выхода из приложения.

Основные команды

use

Переключение контекста напрямую, в интерактивном режиме или возврат к предыдущему контексту.

kubecfg use
kubecfg use production
kubecfg use -
kubecfg use production --namespace kube-system
kubecfg use production --namespace

--namespace без значения открывает экран выбора пространства имён после выбора контекста.

ns

Установить или отобразить пространство имён для текущего контекста.

kubecfg ns
kubecfg ns kube-system
kubecfg ns current

status

Проверить доступность Kubernetes API для одного или нескольких контекстов.

kubecfg status
kubecfg status production
kubecfg status --watch
kubecfg status --output json

Команда завершается с ненулевым кодом возврата, если проверяемый контекст недоступен или неработоспособен — это позволяет использовать её в скриптах.

group

Создание именованных наборов контекстов и переключение между ними.

kubecfg group create prod --contexts eks-prod,gke-prod --color red
kubecfg group create prod --contexts eks-prod,gke-prod --policy prod
kubecfg group list
kubecfg group show prod
kubecfg group use prod
kubecfg group add prod aks-prod
kubecfg group remove prod old-prod
kubecfg group set-policy prod prod
kubecfg group unset-policy prod
kubecfg group delete prod --force

Данные групп хранятся в ~/.kubecfg/groups.yaml. Группа может быть привязана к политике Guard через --policy; при переключении на такую группу Guard автоматически запускается с соответствующей политикой. Подробнее — в docs/context-groups.md.

policy

Просмотр и валидация профилей политик Guard.

kubecfg policy list
kubecfg policy show prod
kubecfg policy init
kubecfg policy validate
kubecfg policy create restricted --from prod

Встроенные профили: prod, staging и debug. Пользовательские профили хранятся в ~/.kubecfg/config.yaml.

Guard и политики

Guard-сессии создают временный kubeconfig, направляющий трафик выбранного кластера через локальный прокси kubecfg. Прокси применяет выбранный профиль политики и записывает события аудита.

kubecfg guard start --ttl 30m --profile prod
export KUBECONFIG=/path/from/guard/output
kubectl get pods -A
kubecfg guard status
kubecfg guard stop

Профиль prod работает в режиме только для чтения и блокирует защищённые ресурсы, в том числе секреты. Профиль staging разрешает больше операций, но требует подтверждения для деструктивных действий. Профиль debug является разрешающим и записывает все обработанные запросы для последующей диагностики.

Просмотр событий аудита:

kubecfg audit tail
kubecfg audit tail --limit 20

Проверка состояния кластеров

kubecfg status проверяет эндпоинты /readyz и /healthz, используя учётные данные из kubeconfig для каждого контекста. Результаты классифицируются как: healthy (работоспособен), degraded (деградирован), unhealthy (неработоспособен), unreachable (недоступен) или unknown (неизвестно).

kubecfg status
kubecfg status production --timeout 2s
kubecfg status --output yaml

Пороговые значения, поведение кэша, обновление в TUI и подробности вывода описаны в docs/health-check.md.

Примеры рабочих сценариев

Ежедневное переключение контекстов

kubecfg status
kubecfg group use prod
kubecfg ns payments
kubecfg current

Импорт и валидация kubeconfig

kubecfg add ./team-prod.yaml --name team-prod
kubecfg validate
kubecfg status team-prod

Подготовка сессии только для чтения в продакшене

kubecfg use production
kubecfg policy show prod
kubecfg guard start --ttl 30m --profile prod
kubecfg audit tail

Группы с привязанной политикой объединяют переключение и запуск Guard в одну команду:

kubecfg group create prod --contexts prod-eu,prod-us --policy prod
kubecfg group use prod

Если в момент переключения уже активна другая Guard-сессия, привязка группы имеет приоритет. Например, переключение на группу prod заменит активную сессию с профилем debug на сессию с профилем prod.

Безопасное слияние kubeconfig-файлов

kubecfg merge east.yaml west.yaml --output merged.yaml --on-conflict rename
kubecfg --kubeconfig ./merged.yaml validate
kubecfg --kubeconfig ./merged.yaml list

Прочие команды

kubecfg add ./cluster.yaml --name dev
kubecfg list --filter prod
kubecfg current --context production
kubecfg search kube-system
kubecfg export production --output production.yaml
kubecfg merge a.yaml b.yaml --output merged.yaml
kubecfg remove old-dev --force
kubecfg rename old-name new-name
kubecfg undo --list
kubecfg version

Управление в TUI

Клавиша Действие

/ / k / j

Навигация

Enter

Выбрать

/

Фильтр

r

Обновить статус Guard в режиме Guard

[ / ]

Изменить предустановку TTL для Guard в режиме Guard

Esc

Назад или отмена

q

Выйти

Ограничения

  • kubecfg управляет kubeconfig-файлами; он не устанавливает и не настраивает кластеры Kubernetes.

  • fzf не является обязательным. При его отсутствии kubecfg использует встроенный интерфейс выбора.

  • Guard-сессии защищают только трафик, проходящий через сгенерированный защищённый kubeconfig. Другие kubeconfig-файлы и прямые обращения к эндпоинтам кластеров находятся вне зоны действия прокси Guard.

  • Пакеты для Krew, APT, Chocolatey, Winget, MacPorts и AUR в данном репозитории для версии v0.2.0 не настроены.

  • Проверка состояния кластеров зависит от сетевой доступности и учётных данных в выбранном kubeconfig.

Разработка

go build ./...
go test ./... -race
go vet ./...
golangci-lint run ./...
goreleaser check

Лицензия

MIT License

© 2026 meganuke