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:
62
Makefile
62
Makefile
@@ -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: ## Сохранить снапшот лаборатории
|
||||
|
||||
@@ -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 # Очистить лабораторию
|
||||
|
||||
Reference in New Issue
Block a user