K8s Tool
Интерактивное консольное приложение для упрощения работы с kubectl. Предоставляет удобное меню с навигацией стрелками для выполнения рутинных операций с Kubernetes.
Особенности
- 🎯 Интерактивное меню с навигацией стрелками
- 🔄 Полное управление Kubernetes контекстами (просмотр, переключение, добавление, удаление)
- ⭐ Избранные namespaces для быстрого доступа
- 🎨 Красивый вывод с использованием Rich
- 📦 Управление namespaces, deployments, pods, ConfigMaps
- 🔄 Быстрый рестарт и масштабирование deployments
- 📝 Просмотр логов pods
- 🔍 Просмотр и редактирование ConfigMaps в текстовом редакторе
- 💾 Сохранение настроек в
~/.config/k8s-tool/k8s-tool.cfg - 🔒 Автоматическое создание резервных копий kubeconfig при изменениях
Требования
- Python 3.9+
- Poetry
- kubectl настроенный для работы с кластером
- Доступ к Kubernetes кластеру
Установка
- Клонируйте репозиторий:
git clone <repo-url>
cd k8s-tool
- Установите зависимости с помощью Poetry:
poetry install
- Активируйте виртуальное окружение:
poetry shell
- Установите приложение:
poetry install
Использование
Запустите приложение командой:
k8s-tool
Или через Poetry:
poetry run k8s-tool
Основные функции
Управление контекстами Kubernetes
Полное управление Kubernetes контекстами/кластерами:
Просмотр и переключение:
- Просмотр всех доступных контекстов в виде таблицы
- Отображение текущего активного контекста (✓)
- Переключение на другой контекст
- Автоматическая переинициализация подключения к новому кластеру
- После переключения контекста namespace сбрасывается и нужно выбрать заново
Добавление нового контекста:
- Интерактивное создание нового контекста
- Указание имени контекста, кластера, пользователя
- API server URL
- Опционально: токен аутентификации
- Опционально: сертификат CA (base64)
- Автоматическое создание резервной копии kubeconfig перед изменением
Удаление контекста:
- Удаление ненужных контекстов
- Защита от удаления текущего активного контекста
- Автоматическое создание резервной копии kubeconfig
Выбор Namespace
Выберите namespace для работы. Все последующие операции будут выполняться в выбранном namespace.
Избранные namespaces отображаются в начале списка с пометкой ⭐ для быстрого доступа. Список избранных сохраняется между запусками приложения.
Управление избранными
Добавляйте часто используемые namespaces в избранное для быстрого доступа:
- Добавить/удалить текущий namespace в/из избранного
- Просмотр всех избранных namespaces
- Добавление любого namespace в избранное из полного списка
- Удаление namespace из избранного
- Очистка всех избранных
Конфигурация сохраняется в файле ~/.config/k8s-tool/k8s-tool.cfg.
Список Deployments
Отображает все deployments в текущем namespace с информацией о:
- Имени deployment
- Количестве реплик
- Доступных репликах
- Готовых репликах
Можно также просмотреть список pods для конкретного deployment.
Рестарт Deployment
Перезапускает выбранный deployment путём обновления аннотации kubectl.kubernetes.io/restartedAt.
Масштабирование Deployment
Изменяет количество реплик deployment. Введите желаемое количество реплик, и приложение выполнит масштабирование.
Просмотр ConfigMaps
Отображает список всех ConfigMaps в namespace с:
- Именем ConfigMap
- Списком ключей данных
- Возрастом ConfigMap
Можно выбрать ConfigMap для просмотра его содержимого с подсветкой синтаксиса.
Редактирование ConfigMap
Отдельный пункт меню для редактирования ConfigMaps:
- Выберите ConfigMap из списка
- Открывается текстовый редактор (из переменной окружения
$EDITORили$VISUAL, по умолчаниюvi) - Редактируйте YAML с данными ConfigMap
- После сохранения показывается diff изменений (добавленные, удаленные, измененные ключи)
- Подтверждение перед применением изменений в кластер
Просмотр логов Pod
Выберите pod и контейнер (если их несколько) для просмотра логов. Можно указать количество строк для отображения (по умолчанию 100).
Навигация
- Используйте стрелки ↑/↓ для перемещения по меню
- Enter для выбора опции
- Ctrl+C для выхода из приложения
Архитектура
Проект состоит из трёх основных модулей:
k8s_client.py- обёртка над Kubernetes Python API для работы с кластеромconfig.py- менеджер конфигурации для управления избранными namespacesmain.py- главное приложение с интерактивным меню
Технологии
- questionary - интерактивные промпты с навигацией стрелками
- kubernetes - Python client для Kubernetes API
- rich - красивый вывод в терминале с таблицами и подсветкой синтаксиса
Разработка
Для разработки:
- Установите зависимости:
poetry install
- Активируйте виртуальное окружение:
poetry shell
- Запустите приложение:
python -m k8s_tool.main
или
poetry run k8s-tool
Лицензия
MIT
Автор
bvn13