Files
openshift-resource-governance/Makefile

140 lines
4.6 KiB
Makefile

# Makefile para OpenShift Resource Governance Tool
# Configurações
IMAGE_NAME = resource-governance
TAG = latest
REGISTRY = andersonid
FULL_IMAGE_NAME = $(REGISTRY)/$(IMAGE_NAME):$(TAG)
NAMESPACE = resource-governance
# Cores para output
RED = \033[0;31m
GREEN = \033[0;32m
YELLOW = \033[1;33m
BLUE = \033[0;34m
NC = \033[0m # No Color
.PHONY: help build test deploy undeploy clean dev logs status
help: ## Mostrar ajuda
@echo "$(BLUE)OpenShift Resource Governance Tool$(NC)"
@echo ""
@echo "Comandos disponíveis:"
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-15s$(NC) %s\n", $$1, $$2}'
build: ## Build da imagem com Podman
@echo "$(YELLOW)📦 Building container image with Podman...$(NC)"
@./scripts/build.sh $(TAG) $(REGISTRY)
test: ## Testar a aplicação
@echo "$(YELLOW)🧪 Testing application...$(NC)"
@python -c "import app.main; print('$(GREEN)✅ App imports successfully$(NC)')"
@echo "$(YELLOW)🧪 Testing API...$(NC)"
@python -m uvicorn app.main:app --host 0.0.0.0 --port 8080 &
@sleep 5
@curl -f http://localhost:8080/health || (echo "$(RED)❌ Health check failed$(NC)" && exit 1)
@pkill -f uvicorn
@echo "$(GREEN)✅ Tests passed$(NC)"
deploy: ## Deploy no OpenShift
@echo "$(YELLOW)🚀 Deploying to OpenShift...$(NC)"
@./scripts/deploy.sh $(TAG) $(REGISTRY)
undeploy: ## Remover do OpenShift
@echo "$(YELLOW)🗑️ Undeploying from OpenShift...$(NC)"
@./scripts/undeploy.sh
clean: ## Limpar recursos locais
@echo "$(YELLOW)🧹 Cleaning up...$(NC)"
@docker rmi $(FULL_IMAGE_NAME) 2>/dev/null || true
@docker system prune -f
@echo "$(GREEN)✅ Cleanup completed$(NC)"
dev: ## Executar em modo desenvolvimento
@echo "$(YELLOW)🔧 Starting development server...$(NC)"
@python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8080
logs: ## Ver logs da aplicação
@echo "$(YELLOW)📋 Showing application logs...$(NC)"
@oc logs -f daemonset/$(IMAGE_NAME) -n $(NAMESPACE)
status: ## Ver status da aplicação
@echo "$(YELLOW)📊 Application status:$(NC)"
@oc get all -n $(NAMESPACE)
@echo ""
@echo "$(YELLOW)🌐 Route URL:$(NC)"
@oc get route $(IMAGE_NAME)-route -n $(NAMESPACE) -o jsonpath='{.spec.host}' 2>/dev/null || echo "Route not found"
install-deps: ## Instalar dependências Python
@echo "$(YELLOW)📦 Installing Python dependencies...$(NC)"
@pip install -r requirements.txt
@echo "$(GREEN)✅ Dependencies installed$(NC)"
format: ## Formatar código Python
@echo "$(YELLOW)🎨 Formatting Python code...$(NC)"
@python -m black app/
@python -m isort app/
@echo "$(GREEN)✅ Code formatted$(NC)"
lint: ## Verificar código Python
@echo "$(YELLOW)🔍 Linting Python code...$(NC)"
@python -m flake8 app/
@python -m mypy app/
@echo "$(GREEN)✅ Linting completed$(NC)"
security: ## Verificar segurança
@echo "$(YELLOW)🔒 Security check...$(NC)"
@python -m bandit -r app/
@echo "$(GREEN)✅ Security check completed$(NC)"
all: clean install-deps format lint test build ## Executar pipeline completo
# Comandos específicos do OpenShift
oc-login: ## Fazer login no OpenShift
@echo "$(YELLOW)🔐 Logging into OpenShift...$(NC)"
@oc login
oc-projects: ## Listar projetos OpenShift
@echo "$(YELLOW)📋 OpenShift projects:$(NC)"
@oc get projects
oc-ns: ## Criar namespace
@echo "$(YELLOW)📁 Creating namespace...$(NC)"
@oc apply -f k8s/namespace.yaml
oc-rbac: ## Aplicar RBAC
@echo "$(YELLOW)🔐 Applying RBAC...$(NC)"
@oc apply -f k8s/rbac.yaml
oc-config: ## Aplicar ConfigMap
@echo "$(YELLOW)⚙️ Applying ConfigMap...$(NC)"
@oc apply -f k8s/configmap.yaml
oc-deploy: ## Aplicar DaemonSet
@echo "$(YELLOW)📦 Applying DaemonSet...$(NC)"
@oc apply -f k8s/daemonset.yaml
oc-service: ## Aplicar Service
@echo "$(YELLOW)🌐 Applying Service...$(NC)"
@oc apply -f k8s/service.yaml
oc-route: ## Aplicar Route
@echo "$(YELLOW)🛣️ Applying Route...$(NC)"
@oc apply -f k8s/route.yaml
oc-apply: oc-ns oc-rbac oc-config oc-deploy oc-service oc-route ## Aplicar todos os recursos
# Comandos de monitoramento
monitor: ## Monitorar aplicação
@echo "$(YELLOW)📊 Monitoring application...$(NC)"
@watch -n 5 'oc get pods -n $(NAMESPACE) && echo "" && oc get route $(IMAGE_NAME)-route -n $(NAMESPACE)'
health: ## Verificar saúde da aplicação
@echo "$(YELLOW)🏥 Health check...$(NC)"
@ROUTE_URL=$$(oc get route $(IMAGE_NAME)-route -n $(NAMESPACE) -o jsonpath='{.spec.host}' 2>/dev/null); \
if [ -n "$$ROUTE_URL" ]; then \
curl -f https://$$ROUTE_URL/health || echo "$(RED)❌ Health check failed$(NC)"; \
else \
echo "$(RED)❌ Route not found$(NC)"; \
fi