kubecfg — менеджер kubeconfig для Kubernetes, ориентированный на тех, кто часто переключается между контекстами и которым нужно больше, чем тонкая обёртка над kubectl config.
Инструмент предоставляет быстрое переключение контекстов и пространств имён (namespace), группы контекстов, проверку состояния кластеров и защищённые сессии Kubernetes, которые могут маршрутизировать запросы через локальный прокси с поддержкой политик.
Ключевые возможности
-
Интерактивный TUI (текстовый интерфейс пользователя) для просмотра и переключения контекстов.
-
Прямые CLI-команды для работы с контекстами, пространствами имён, слиянием, экспортом, валидацией и восстановлением из резервных копий.
-
Опциональная интеграция с
fzfдля выбора контекста и пространства имён. -
Переключение на предыдущий контекст через
kubecfg use -. -
Группы контекстов, хранящиеся в
~/.kubecfg/groups.yaml. -
Проверка состояния всех контекстов или отдельного контекста с выводом в виде таблицы, JSON или YAML.
-
Защищённые (guard) сессии со сгенерированными kubeconfig-файлами, TTL, журналами аудита, профилями политик и автоматической активацией из групп, привязанных к политике.
-
Автодополнение для Bash, Zsh, Fish и PowerShell.
Скриншоты
Выбор контекста
Список контекстов
Профили политик
Команды Guard
Справка
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
| Клавиша | Действие |
|---|---|
|
Навигация |
|
Выбрать |
|
Фильтр |
|
Обновить статус Guard в режиме Guard |
|
Изменить предустановку TTL для Guard в режиме Guard |
|
Назад или отмена |
|
Выйти |
Ограничения
-
kubecfg управляет kubeconfig-файлами; он не устанавливает и не настраивает кластеры Kubernetes.
-
fzfне является обязательным. При его отсутствии kubecfg использует встроенный интерфейс выбора. -
Guard-сессии защищают только трафик, проходящий через сгенерированный защищённый kubeconfig. Другие kubeconfig-файлы и прямые обращения к эндпоинтам кластеров находятся вне зоны действия прокси Guard.
-
Пакеты для Krew, APT, Chocolatey, Winget, MacPorts и AUR в данном репозитории для версии v0.2.0 не настроены.
-
Проверка состояния кластеров зависит от сетевой доступности и учётных данных в выбранном kubeconfig.
Документация
Документация проекта опубликована на kadirbelkuyu.github.io/kubecfg.
Разработка
go build ./...
go test ./... -race
go vet ./...
golangci-lint run ./...
goreleaser check
Лицензия
MIT License