155 lines
6.0 KiB
Markdown
155 lines
6.0 KiB
Markdown
# 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
|
||
```
|
||
|
||
## Лицензия
|
||
|
||
MIT
|
||
|
||
## Автор
|
||
|
||
vy.boyko
|