feat: Добавлены команды для работы с kubeconfig и улучшена генерация отчетов

- Добавлена команда make kube kubeconfig CLUSTER=lab для получения kubeconfig файла
- Добавлена команда make kubeconfigs для получения всех kubeconfig файлов
- Улучшена команда make report для запуска через контейнер
- Добавлена команда make open-report для открытия отчета в браузере
- Добавлена команда make full-test для полного цикла с отчетом и kubeconfig
- Обновлена справка make help с новыми командами
- Обновлен README.md с новыми командами

Новые команды:
- make kube kubeconfig CLUSTER=lab - получить kubeconfig для конкретного кластера
- make kubeconfigs - получить все kubeconfig файлы из всех кластеров
- make open-report - открыть HTML отчет в браузере
- make full-test - полный цикл тестирования с генерацией отчетов и kubeconfig

Улучшения:
- Генерация отчетов теперь работает через контейнер (не требует Python локально)
- Автоматическое создание директорий reports/ и reports/kubeconfigs/
- Цветной вывод с информативными сообщениями
- Кроссплатформенное открытие отчетов (macOS, Linux, Windows)
- Валидация существования файлов перед открытием

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-10-22 13:43:08 +03:00
parent f2a0f46813
commit 9c55c8f615
2 changed files with 65 additions and 1 deletions

View File

@@ -63,6 +63,9 @@ help: ## Показать справку по всем командам
@echo "$(GREEN)Kubernetes:$(RESET)"
@awk 'BEGIN {FS = ":.*?## "} /^kube-[a-zA-Z_-]+:.*?## / {printf " $(CYAN)%-20s$(RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST)
@echo ""
@echo "$(GREEN)Отчеты и мониторинг:$(RESET)"
@awk 'BEGIN {FS = ":.*?## "} /^(report|kubeconfigs|open-report|full-test):.*?## / {printf " $(CYAN)%-20s$(RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST)
@echo ""
@echo "$(GREEN)Пресеты:$(RESET)"
@awk 'BEGIN {FS = ":.*?## "} /^preset-[a-zA-Z_-]+:.*?## / {printf " $(CYAN)%-20s$(RESET) %s\n", $$1, $$2}' $(MAKEFILE_LIST)
@echo ""
@@ -255,8 +258,17 @@ kube: ## Управление Kubernetes (sh|cmd|enter|kiali|istio|grafana|prom|
echo "$(RED)🛑 Останавливаем все port-forward...$(RESET)"; \
docker exec -it ansible-controller bash -lc 'pkill -f "kubectl .* port-forward" || true'; \
echo "$(GREEN)✅ Port-forward остановлены$(RESET)";; \
kubeconfig) \
if [ -z "$(CLUSTER)" ]; then \
echo "$(RED)❌ Использование: make kube kubeconfig CLUSTER=lab$(RESET)"; \
exit 1; \
fi; \
echo "$(BLUE)📋 Получаем kubeconfig для кластера $(CLUSTER)...$(RESET)"; \
mkdir -p reports/kubeconfigs; \
docker exec ansible-controller bash -lc 'kubectl --context kind-$(CLUSTER) config view --raw' > reports/kubeconfigs/kubeconfig-$(CLUSTER).yaml; \
echo "$(GREEN)✅ Kubeconfig сохранен: reports/kubeconfigs/kubeconfig-$(CLUSTER).yaml$(RESET)";; \
*) \
echo "$(RED)❌ Неизвестная команда. Доступные: sh, cmd, enter, kiali, istio, grafana, prom, pf-stop$(RESET)";; \
echo "$(RED)❌ Неизвестная команда. Доступные: sh, cmd, enter, kiali, istio, grafana, prom, pf-stop, kubeconfig$(RESET)";; \
esac
# =============================================================================
@@ -514,8 +526,56 @@ docker: ## Управление Docker (build|rebuild|prune|shell|logs|stop|star
.PHONY: report
report: ## Сгенерировать HTML отчет
@echo "$(PURPLE)📊 Генерируем HTML отчет...$(RESET)"
@mkdir -p reports
@docker exec ansible-controller bash -lc 'python3 /ansible/scripts/report_html.py /ansible/reports/lab-health.json /ansible/reports/lab-report.html'
@echo "$(GREEN)✅ HTML отчет: reports/lab-report.html$(RESET)"
@echo "$(YELLOW)📖 Откройте отчет в браузере:$(RESET)"
@echo " $(BLUE)file://$(PWD)/reports/lab-report.html$(RESET)"
.PHONY: kubeconfigs
kubeconfigs: ## Получить все kubeconfig файлы
@echo "$(BLUE)📋 Получаем все kubeconfig файлы...$(RESET)"
@mkdir -p reports/kubeconfigs
@docker exec ansible-controller bash -lc 'for cluster in $$(kind get clusters 2>/dev/null || echo ""); do \
if [ -n "$$cluster" ]; then \
echo "Получаем kubeconfig для $$cluster..."; \
kubectl --context kind-$$cluster config view --raw > /ansible/reports/kubeconfigs/kubeconfig-$$cluster.yaml; \
fi; \
done'
@echo "$(GREEN)✅ Kubeconfig файлы сохранены в reports/kubeconfigs/$(RESET)"
@if [ -d "reports/kubeconfigs" ] && [ -n "$$(ls reports/kubeconfigs/ 2>/dev/null)" ]; then \
echo "$(YELLOW)📁 Найденные kubeconfig файлы:$(RESET)"; \
ls -la reports/kubeconfigs/ | grep -v "^total" | awk '{print " " $$9}'; \
fi
.PHONY: open-report
open-report: ## Открыть HTML отчет в браузере
@if [ -f "reports/lab-report.html" ]; then \
echo "$(BLUE)🌐 Открываем отчет в браузере...$(RESET)"; \
if command -v open >/dev/null 2>&1; then \
open reports/lab-report.html; \
elif command -v xdg-open >/dev/null 2>&1; then \
xdg-open reports/lab-report.html; \
else \
echo "$(YELLOW)⚠️ Откройте отчет вручную: file://$(PWD)/reports/lab-report.html$(RESET)"; \
fi; \
echo "$(GREEN)✅ Отчет открыт$(RESET)"; \
else \
echo "$(RED)❌ Отчет не найден. Сначала выполните: make report$(RESET)"; \
fi
.PHONY: full-test
full-test: ## Полный цикл тестирования с отчетом и kubeconfig
@echo "$(PURPLE)🚀 Запускаем полный цикл тестирования...$(RESET)"
@$(MAKE) lab test
@echo "$(BLUE)📊 Генерируем отчеты...$(RESET)"
@$(MAKE) report
@$(MAKE) kubeconfigs
@echo "$(GREEN)✅ Полный цикл завершен!$(RESET)"
@echo "$(YELLOW)📁 Результаты:$(RESET)"
@echo " $(BLUE)📊 HTML отчет: reports/lab-report.html$(RESET)"
@echo " $(BLUE)📋 Kubeconfig файлы: reports/kubeconfigs/$(RESET)"
@echo "$(YELLOW)🌐 Открыть отчет: make open-report$(RESET)"
.PHONY: snapshot
snapshot: ## Сохранить снапшот лаборатории

View File

@@ -86,6 +86,7 @@ make kube kiali CLUSTER=lab
make kube istio CLUSTER=lab
make kube grafana CLUSTER=lab
make kube prom CLUSTER=lab
make kube kubeconfig CLUSTER=lab # Получить kubeconfig
# Управление пресетами
make preset list # Список пресетов
@@ -112,6 +113,9 @@ make git push # Отправить изменения
# Отчеты и мониторинг
make report # HTML отчет
make kubeconfigs # Получить все kubeconfig файлы
make open-report # Открыть отчет в браузере
make full-test # Полный цикл с отчетом и kubeconfig
make snapshot # Создать снапшот
make restore # Восстановить снапшот
make cleanup # Очистить лабораторию