k8s-tool/README.md
2025-10-25 21:31:46 +03:00

161 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# K8s Tool
Интерактивное консольное приложение для упрощения работы с kubectl. Предоставляет удобное меню с навигацией стрелками для выполнения рутинных операций с Kubernetes.
## Особенности
- 🎯 Интерактивное меню с навигацией стрелками
- ⭐ Избранные namespaces для быстрого доступа
- 🎨 Красивый вывод с использованием Rich
- 📦 Управление namespaces, deployments, pods, ConfigMaps
- 🔄 Быстрый рестарт и масштабирование deployments
- 📝 Просмотр логов pods
- 🔍 Просмотр и редактирование ConfigMaps в текстовом редакторе
- 💾 Сохранение настроек в `~/.config/k8s-tool/k8s-tool.cfg`
## Требования
- Python 3.9+
- Poetry
- kubectl настроенный для работы с кластером
- Доступ к Kubernetes кластеру
## Установка
1. Клонируйте репозиторий:
```bash
git clone <repo-url>
cd k8s-tool
```
2. Установите зависимости с помощью Poetry:
```bash
poetry install
```
3. Активируйте виртуальное окружение:
```bash
poetry shell
```
4. Установите приложение:
```bash
poetry install
```
## Использование
Запустите приложение командой:
```bash
k8s-tool
```
Или через Poetry:
```bash
poetry run k8s-tool
```
### Основные функции
#### Выбор 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` - менеджер конфигурации для управления избранными namespaces
- `main.py` - главное приложение с интерактивным меню
### Технологии
- **questionary** - интерактивные промпты с навигацией стрелками
- **kubernetes** - Python client для Kubernetes API
- **rich** - красивый вывод в терминале с таблицами и подсветкой синтаксиса
## Разработка
Для разработки:
1. Установите зависимости:
```bash
poetry install
```
2. Активируйте виртуальное окружение:
```bash
poetry shell
```
3. Запустите приложение:
```bash
python -m k8s_tool.main
```
или
```
poetry run k8s-tool
```
## Лицензия
MIT
## Автор
bvn13