diff --git a/AUTO-DEPLOY-GUIDE.md b/AUTO-DEPLOY-GUIDE.md deleted file mode 100644 index 8e9477b..0000000 --- a/AUTO-DEPLOY-GUIDE.md +++ /dev/null @@ -1,279 +0,0 @@ -# 🚀 Deploy Automático - Guia Completo - -## 📋 Visão Geral - -Este guia explica como configurar deploy automático após o GitHub Actions criar a imagem no Docker Hub. - -**⚠️ NOTA: Este guia está desatualizado. Use o README.md principal para instruções atuais.** - -## 🔍 **SITUAÇÃO ATUAL:** - -### ✅ **GitHub Actions (Funcionando):** -- Builda a imagem automaticamente -- Faz push para Docker Hub -- **NÃO faz deploy no OpenShift** - -### ❌ **OpenShift (Manual):** -- **NÃO detecta** mudanças na imagem automaticamente -- Precisa de **rollout manual** -- Blue-Green só funciona se configurado - -## 🚀 **SOLUÇÕES PARA DEPLOY AUTOMÁTICO:** - -### **Opção 1: Deploy Manual via GitHub Actions** ⭐ (Recomendado) - -#### **Como usar:** -1. Vá para: `Actions` → `Deploy to OpenShift (Manual Trigger)` -2. Clique em `Run workflow` -3. Preencha os campos: - - **OpenShift Server URL**: `https://api.your-cluster.com` - - **OpenShift Token**: Seu token do OpenShift - - **Target Namespace**: `resource-governance` - - **Image Tag**: `latest` ou tag específica -4. Clique em `Run workflow` - -#### **Vantagens:** -- ✅ Seguro (requer confirmação manual) -- ✅ Funciona com qualquer cluster OpenShift -- ✅ Controle total sobre quando fazer deploy -- ✅ Logs detalhados no GitHub Actions - ---- - -### **Opção 2: Deploy Automático Local** 🔄 - -#### **Como usar:** -```bash -# Deploy automático com latest -./scripts/auto-deploy.sh - -# Deploy automático com tag específica -./scripts/auto-deploy.sh v1.0.0 - -# Deploy automático com commit SHA -./scripts/auto-deploy.sh 6f6e4ed19d2fbcccba548eeaf0d9e2624f41afba -``` - -#### **Vantagens:** -- ✅ Deploy automático -- ✅ Verifica se a imagem existe no Docker Hub -- ✅ Blue-Green deployment (zero downtime) -- ✅ Logs detalhados - -#### **Configuração:** -```bash -# 1. Fazer login no OpenShift -oc login https://api.your-cluster.com - -# 2. Executar deploy automático -./scripts/auto-deploy.sh latest -``` - ---- - -### **Opção 3: Webhook para Deploy Automático** 🌐 - -#### **Como configurar:** - -1. **Instalar dependências:** -```bash -pip install flask -``` - -2. **Configurar variáveis de ambiente:** -```bash -export IMAGE_NAME="resource-governance" -export REGISTRY="andersonid" -export NAMESPACE="resource-governance" -export AUTO_DEPLOY_SCRIPT="./scripts/auto-deploy.sh" -``` - -3. **Executar webhook server:** -```bash -python3 scripts/webhook-deploy.py -``` - -4. **Configurar webhook no Docker Hub:** - - Acesse: https://hub.docker.com/r/andersonid/resource-governance/webhooks - - Clique em `Create Webhook` - - **Webhook URL**: `http://your-server:8080/webhook/dockerhub` - - **Trigger**: `Push to repository` - - **Tag**: `latest` - -#### **Endpoints disponíveis:** -- `POST /webhook/dockerhub` - Webhook do Docker Hub -- `POST /webhook/github` - Webhook do GitHub -- `POST /deploy/` - Deploy manual -- `GET /health` - Health check -- `GET /status` - Status do serviço - -#### **Vantagens:** -- ✅ Deploy completamente automático -- ✅ Funciona com Docker Hub e GitHub -- ✅ API REST para controle -- ✅ Logs detalhados - ---- - -### **Opção 4: Cron Job para Deploy Automático** ⏰ - -#### **Como configurar:** - -1. **Criar script de verificação:** -```bash -#!/bin/bash -# scripts/check-and-deploy.sh - -# Verificar se há nova imagem -LATEST_SHA=$(curl -s "https://api.github.com/repos/andersonid/openshift-resource-governance/commits/main" | jq -r '.sha') -CURRENT_SHA=$(oc get deployment resource-governance -n resource-governance -o jsonpath='{.spec.template.spec.containers[0].image}' | cut -d: -f2) - -if [ "$LATEST_SHA" != "$CURRENT_SHA" ]; then - echo "Nova versão detectada: $LATEST_SHA" - ./scripts/auto-deploy.sh $LATEST_SHA -else - echo "Versão já está atualizada: $CURRENT_SHA" -fi -``` - -2. **Configurar cron job:** -```bash -# Executar a cada 5 minutos -*/5 * * * * /path/to/scripts/check-and-deploy.sh >> /var/log/auto-deploy.log 2>&1 -``` - -#### **Vantagens:** -- ✅ Deploy automático baseado em tempo -- ✅ Verifica mudanças automaticamente -- ✅ Simples de configurar - ---- - -## 🔧 **CONFIGURAÇÃO DO BLUE-GREEN DEPLOYMENT:** - -### **Estratégia Rolling Update (Zero Downtime):** -```yaml -# k8s/deployment.yaml -spec: - strategy: - type: RollingUpdate - rollingUpdate: - maxUnavailable: 0 # Nunca derruba pods até o novo estar pronto - maxSurge: 1 # Permite 1 pod extra durante o rollout -``` - -### **Health Checks:** -```yaml -# k8s/deployment.yaml -livenessProbe: - httpGet: - path: /api/v1/health - port: 8080 - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 3 - -readinessProbe: - httpGet: - path: /api/v1/health - port: 8080 - initialDelaySeconds: 15 - periodSeconds: 5 - timeoutSeconds: 3 - failureThreshold: 5 - successThreshold: 2 -``` - ---- - -## 📊 **MONITORAMENTO DO DEPLOY:** - -### **Verificar Status:** -```bash -# Status do deployment -oc get deployment resource-governance -n resource-governance - -# Status dos pods -oc get pods -n resource-governance -l app.kubernetes.io/name=resource-governance - -# Logs do deployment -oc logs -f deployment/resource-governance -n resource-governance - -# Histórico de rollouts -oc rollout history deployment/resource-governance -n resource-governance -``` - -### **Verificar Imagem Atual:** -```bash -# Imagem atual do deployment -oc get deployment resource-governance -n resource-governance -o jsonpath='{.spec.template.spec.containers[0].image}' - -# Verificar se a imagem existe no Docker Hub -skopeo inspect docker://andersonid/resource-governance:latest -``` - ---- - -## 🚨 **TROUBLESHOOTING:** - -### **Problemas Comuns:** - -#### 1. **Deploy falha com "ImagePullBackOff"** -```bash -# Verificar se a imagem existe -skopeo inspect docker://andersonid/resource-governance:latest - -# Verificar logs do pod -oc describe pod -l app.kubernetes.io/name=resource-governance -n resource-governance -``` - -#### 2. **Rollout fica travado** -```bash -# Verificar status do rollout -oc rollout status deployment/resource-governance -n resource-governance - -# Forçar restart se necessário -oc rollout restart deployment/resource-governance -n resource-governance -``` - -#### 3. **Webhook não funciona** -```bash -# Verificar logs do webhook -python3 scripts/webhook-deploy.py - -# Testar webhook manualmente -curl -X POST http://localhost:8080/deploy/latest -``` - ---- - -## 🎯 **RECOMENDAÇÕES:** - -### **Para Desenvolvimento:** -- Use **Opção 1** (Deploy Manual via GitHub Actions) -- Controle total sobre quando fazer deploy -- Logs detalhados no GitHub - -### **Para Produção:** -- Use **Opção 2** (Deploy Automático Local) com cron job -- Configure webhook para deploy automático -- Monitore logs e status - -### **Para Equipes:** -- Use **Opção 3** (Webhook) com API REST -- Configure notificações -- Implemente rollback automático - ---- - -## 🔗 **LINKS ÚTEIS:** - -- **GitHub Actions**: https://github.com/andersonid/openshift-resource-governance/actions -- **Docker Hub**: https://hub.docker.com/r/andersonid/resource-governance -- **OpenShift CLI**: https://docs.openshift.com/container-platform/latest/cli_reference/openshift_cli/ - ---- - -**Desenvolvido por:** Anderson Nobre -**Suporte:** Abra uma issue no GitHub se tiver problemas diff --git a/DEPLOY.md b/DEPLOY.md deleted file mode 100644 index e886d56..0000000 --- a/DEPLOY.md +++ /dev/null @@ -1,291 +0,0 @@ -# 🚀 Deploy no OpenShift - -Este documento explica como fazer deploy da OpenShift Resource Governance Tool no seu cluster OpenShift. - -**⚠️ NOTA: Este guia está desatualizado. Use o README.md principal para instruções atuais.** - -## 📋 Pré-requisitos - -- Cluster OpenShift 4.x -- OpenShift CLI (oc) instalado e configurado -- Acesso ao cluster com permissões para criar recursos -- Container Registry (Docker Hub, Quay.io, etc.) - -## 🎯 Opções de Deploy - -### 1. Deploy Rápido (Recomendado) - -```bash -# Clone o repositório -git clone https://github.com/andersonid/openshift-resource-governance.git -cd openshift-resource-governance - -# Execute o script de deploy -./openshift-deploy.sh -``` - -### 2. Deploy via Template OpenShift - -```bash -# Processar template com parâmetros -oc process -f openshift-git-deploy.yaml \ - -p GITHUB_REPO="https://github.com/andersonid/openshift-resource-governance.git" \ - -p IMAGE_TAG="latest" \ - -p REGISTRY="andersonid" \ - -p NAMESPACE="resource-governance" | oc apply -f - -``` - -### 3. Deploy Manual - -```bash -# 1. Criar namespace -oc apply -f k8s/namespace.yaml - -# 2. Aplicar RBAC -oc apply -f k8s/rbac.yaml - -# 3. Aplicar ConfigMap -oc apply -f k8s/configmap.yaml - -# 4. Atualizar imagem no DaemonSet -oc set image daemonset/resource-governance resource-governance=andersonid/resource-governance:latest -n resource-governance - -# 5. Aplicar recursos -oc apply -f k8s/daemonset.yaml -oc apply -f k8s/service.yaml -oc apply -f k8s/route.yaml -``` - -## 🔧 Configuração - -### Variáveis de Ambiente - -A aplicação pode ser configurada através do ConfigMap: - -```yaml -data: - CPU_LIMIT_RATIO: "3.0" # Ratio padrão limit:request para CPU - MEMORY_LIMIT_RATIO: "3.0" # Ratio padrão limit:request para memória - MIN_CPU_REQUEST: "10m" # Mínimo de CPU request - MIN_MEMORY_REQUEST: "32Mi" # Mínimo de memória request - CRITICAL_NAMESPACES: | # Namespaces críticos para VPA - openshift-monitoring - openshift-ingress - openshift-apiserver - PROMETHEUS_URL: "http://prometheus.openshift-monitoring.svc.cluster.local:9090" -``` - -### Personalizar Configurações - -```bash -# Editar ConfigMap -oc edit configmap resource-governance-config -n resource-governance - -# Reiniciar pods para aplicar mudanças -oc rollout restart daemonset/resource-governance -n resource-governance -``` - -## 🌐 Acesso à Aplicação - -### Obter URL da Rota - -```bash -# Obter URL da rota -oc get route resource-governance-route -n resource-governance -o jsonpath='{.spec.host}' - -# Acessar via browser -# https://resource-governance-route-resource-governance.apps.openshift.local -``` - -### Testar Aplicação - -```bash -# Health check -curl https://resource-governance-route-resource-governance.apps.openshift.local/health - -# API status -curl https://resource-governance-route-resource-governance.apps.openshift.local/api/v1/cluster/status -``` - -## 📊 Monitoramento - -### Ver Logs - -```bash -# Logs do DaemonSet -oc logs -f daemonset/resource-governance -n resource-governance - -# Logs de um pod específico -oc logs -f -n resource-governance -``` - -### Ver Status - -```bash -# Status dos recursos -oc get all -n resource-governance - -# Status detalhado do DaemonSet -oc describe daemonset/resource-governance -n resource-governance - -# Status dos pods -oc get pods -n resource-governance -o wide -``` - -### Verificar RBAC - -```bash -# Verificar permissões do ServiceAccount -oc auth can-i get pods --as=system:serviceaccount:resource-governance:resource-governance-sa - -# Verificar ClusterRole -oc describe clusterrole resource-governance-role -``` - -## 🔄 Atualizações - -### Atualizar Imagem - -```bash -# Atualizar para nova tag -oc set image daemonset/resource-governance resource-governance=andersonid/resource-governance:v1.1.0 -n resource-governance - -# Aguardar rollout -oc rollout status daemonset/resource-governance -n resource-governance -``` - -### Atualizar do GitHub - -```bash -# Pull das mudanças -git pull origin main - -# Deploy com nova tag -./openshift-deploy.sh v1.1.0 -``` - -## 🗑️ Remoção - -### Remover Aplicação - -```bash -# Usar script de undeploy -./scripts/undeploy.sh - -# Ou remover manualmente -oc delete -f k8s/route.yaml -oc delete -f k8s/service.yaml -oc delete -f k8s/daemonset.yaml -oc delete -f k8s/configmap.yaml -oc delete -f k8s/rbac.yaml -oc delete -f k8s/namespace.yaml -``` - -## 🐛 Troubleshooting - -### Problemas Comuns - -#### 1. Pod não inicia -```bash -# Verificar eventos -oc get events -n resource-governance --sort-by='.lastTimestamp' - -# Verificar logs -oc logs -n resource-governance -``` - -#### 2. Erro de permissão -```bash -# Verificar RBAC -oc auth can-i get pods --as=system:serviceaccount:resource-governance:resource-governance-sa - -# Verificar ServiceAccount -oc get serviceaccount resource-governance-sa -n resource-governance -o yaml -``` - -#### 3. Erro de conectividade com Prometheus -```bash -# Verificar se Prometheus está acessível -oc exec -it -n resource-governance -- curl http://prometheus.openshift-monitoring.svc.cluster.local:9090/api/v1/query?query=up -``` - -#### 4. Rota não acessível -```bash -# Verificar rota -oc get route resource-governance-route -n resource-governance -o yaml - -# Verificar ingress controller -oc get pods -n openshift-ingress -``` - -### Logs de Debug - -```bash -# Ativar logs debug (se necessário) -oc set env daemonset/resource-governance LOG_LEVEL=DEBUG -n resource-governance - -# Ver logs em tempo real -oc logs -f daemonset/resource-governance -n resource-governance --tail=100 -``` - -## 📈 Escalabilidade - -### Ajustar Recursos - -```bash -# Aumentar recursos do DaemonSet -oc patch daemonset resource-governance -n resource-governance -p '{ - "spec": { - "template": { - "spec": { - "containers": [{ - "name": "resource-governance", - "resources": { - "requests": {"cpu": "200m", "memory": "256Mi"}, - "limits": {"cpu": "1000m", "memory": "1Gi"} - } - }] - } - } - } -}' -``` - -### Ajustar ResourceQuota - -```bash -# Aumentar quota do namespace -oc patch resourcequota resource-governance-quota -n resource-governance -p '{ - "spec": { - "hard": { - "requests.cpu": "4", - "requests.memory": "8Gi", - "limits.cpu": "8", - "limits.memory": "16Gi" - } - } -}' -``` - -## 🔐 Segurança - -### Verificar SecurityContext - -```bash -# Verificar se está rodando como usuário não-root -oc get pod -n resource-governance -o jsonpath='{.spec.securityContext}' -``` - -### Verificar NetworkPolicies - -```bash -# Se usando NetworkPolicies, verificar se permite tráfego -oc get networkpolicy -n resource-governance -``` - -## 📞 Suporte - -Para suporte e dúvidas: -- Abra uma issue no [GitHub](https://github.com/andersonid/openshift-resource-governance/issues) -- Consulte a documentação do [OpenShift](https://docs.openshift.com/) -- Verifique os logs da aplicação diff --git a/DOCKERHUB-SETUP.md b/DOCKERHUB-SETUP.md deleted file mode 100644 index 2719b90..0000000 --- a/DOCKERHUB-SETUP.md +++ /dev/null @@ -1,129 +0,0 @@ -# 🐳 Configuração do Docker Hub - -## 📋 Secrets Necessários no GitHub - -Para o GitHub Actions funcionar com Docker Hub, configure estes secrets: - -**⚠️ NOTA: Este guia está desatualizado. Use o README.md principal para instruções atuais.** - -### 1. **DOCKERHUB_USERNAME** -- **Nome**: `DOCKERHUB_USERNAME` -- **Valor**: `andersonid` - -### 2. **DOCKERHUB_TOKEN** -- **Nome**: `DOCKERHUB_TOKEN` -- **Valor**: Seu token de acesso do Docker Hub - -## 🔑 Como Obter o Token do Docker Hub - -### 1. **Acesse o Docker Hub** -- Vá para: https://hub.docker.com -- Faça login com sua conta - -### 2. **Criar Access Token** -- Clique no seu avatar (canto superior direito) -- Vá em **Account Settings** -- Clique em **Security** → **New Access Token** -- Dê um nome: `openshift-resource-governance` -- Selecione **Read, Write, Delete** permissions -- Clique em **Generate** -- **Copie o token** (você só verá uma vez!) - -### 3. **Configurar no GitHub** -- Vá para: https://github.com/andersonid/openshift-resource-governance/settings/secrets/actions -- Clique em **New repository secret** -- Adicione os dois secrets acima - -## 🚀 Deploy Automático - -Após configurar os secrets, o deploy será automático: - -1. **Push para main** → GitHub Actions executa -2. **Build da imagem** → `andersonid/openshift-resource-governance:latest` -3. **Push para Docker Hub** → Imagem disponível publicamente -4. **Deploy no OpenShift** → Aplicação atualizada - -## 🔧 Deploy Manual (Alternativo) - -Se preferir deploy manual: - -```bash -# 1. Build local -./scripts/build.sh - -# 2. Login no Docker Hub -docker login - -# 3. Push da imagem -docker push andersonid/openshift-resource-governance:latest - -# 4. Deploy no OpenShift -./openshift-deploy.sh -``` - -## 📊 Verificar Deploy - -```bash -# Ver imagem no Docker Hub -# https://hub.docker.com/r/andersonid/openshift-resource-governance - -# Ver status no OpenShift -oc get all -n resource-governance - -# Ver logs -oc logs -f daemonset/resource-governance -n resource-governance -``` - -## 🐛 Troubleshooting - -### Erro de Login Docker Hub -```bash -# Verificar se está logado -docker login - -# Testar push manual -docker push andersonid/openshift-resource-governance:latest -``` - -### Erro de Permissão GitHub Actions -- Verifique se os secrets estão configurados corretamente -- Verifique se o token tem permissões de Read, Write, Delete -- Verifique se o usuário tem acesso ao repositório Docker Hub - -### Imagem não encontrada no OpenShift -```bash -# Verificar se a imagem existe -docker pull andersonid/openshift-resource-governance:latest - -# Verificar logs do pod -oc describe pod -n resource-governance -``` - -## 📝 Notas Importantes - -- **Imagem pública**: A imagem será pública no Docker Hub -- **Tags automáticas**: GitHub Actions cria tags baseadas no commit -- **Cache**: Docker Hub mantém cache das imagens -- **Limites**: Docker Hub tem limites de pull/push (verifique seu plano) - -## 🔄 Atualizações - -Para atualizar a aplicação: - -```bash -# 1. Fazer mudanças no código -git add . -git commit -m "Update application" -git push origin main - -# 2. GitHub Actions fará o resto automaticamente! -# - Build da nova imagem -# - Push para Docker Hub -# - Deploy no OpenShift -``` - -## 📞 Suporte - -- **Docker Hub**: https://hub.docker.com/r/andersonid/openshift-resource-governance -- **GitHub**: https://github.com/andersonid/openshift-resource-governance -- **Issues**: https://github.com/andersonid/openshift-resource-governance/issues diff --git a/DOCUMENTATION.md b/DOCUMENTATION.md index d90ded0..d2cd3cc 100644 --- a/DOCUMENTATION.md +++ b/DOCUMENTATION.md @@ -6,13 +6,8 @@ - **[README.md](README.md)** - 📖 **Documentação principal e completa** - **[AIAgents-Support.md](AIAgents-Support.md)** - 🤖 Suporte para agentes de IA -### ⚠️ **Documentação Desatualizada (Referência)** -- [AUTO-DEPLOY-GUIDE.md](AUTO-DEPLOY-GUIDE.md) - Deploy automático (desatualizado) -- [GITHUB-ACTIONS-GUIDE.md](GITHUB-ACTIONS-GUIDE.md) - GitHub Actions (desatualizado) -- [README-DEPLOYMENT.md](README-DEPLOYMENT.md) - Guia de deploy (desatualizado) -- [DOCKERHUB-SETUP.md](DOCKERHUB-SETUP.md) - Configuração Docker Hub (desatualizado) -- [DEPLOY.md](DEPLOY.md) - Deploy no OpenShift (desatualizado) -- [QUICK-START.md](QUICK-START.md) - Quick Start (desatualizado) +### ✅ **Documentação Limpa e Organizada** +Todos os arquivos desatualizados foram removidos para manter apenas a documentação atual e relevante. ## 🚀 Como Usar @@ -30,18 +25,15 @@ |---------|--------|-------------------|-------------| | README.md | ✅ Ativo | 2025-01-27 | Documentação principal atualizada | | AIAgents-Support.md | ✅ Ativo | 2025-01-27 | Suporte para IA agents | -| AUTO-DEPLOY-GUIDE.md | ⚠️ Desatualizado | - | Menciona daemonset, scripts antigos | -| GITHUB-ACTIONS-GUIDE.md | ⚠️ Desatualizado | - | Nome da imagem incorreto | -| README-DEPLOYMENT.md | ⚠️ Desatualizado | - | Menciona daemonset, scripts antigos | -| DOCKERHUB-SETUP.md | ⚠️ Desatualizado | - | Nome da imagem incorreto | -| DEPLOY.md | ⚠️ Desatualizado | - | Menciona daemonset, scripts antigos | -| QUICK-START.md | ⚠️ Desatualizado | - | Menciona daemonset, scripts antigos | +| DOCUMENTATION.md | ✅ Ativo | 2025-01-27 | Índice da documentação | + +**Arquivos removidos:** 6 arquivos desatualizados foram removidos para manter a documentação limpa e organizada. ## 🔄 Próximos Passos 1. **Manter README.md atualizado** como fonte única da verdade -2. **Considerar remover arquivos desatualizados** em versão futura -3. **Atualizar AIAgents-Support.md** conforme necessário +2. **Atualizar AIAgents-Support.md** conforme necessário +3. **Manter DOCUMENTATION.md** como índice da documentação ## 📞 Suporte diff --git a/GITHUB-ACTIONS-GUIDE.md b/GITHUB-ACTIONS-GUIDE.md deleted file mode 100644 index 70828d6..0000000 --- a/GITHUB-ACTIONS-GUIDE.md +++ /dev/null @@ -1,188 +0,0 @@ -# 🚀 GitHub Actions - Guia de Uso - -## 📋 Visão Geral - -O GitHub Actions está configurado para **buildar e fazer push automático** da imagem Docker para o Docker Hub sempre que você fizer push para o repositório. - -**⚠️ NOTA: Este guia está desatualizado. Use o README.md principal para instruções atuais.** - -## 🔧 Configuração Necessária - -### 1. Secrets do GitHub -Certifique-se de que estes secrets estão configurados no repositório: - -- `DOCKERHUB_USERNAME`: Seu usuário do Docker Hub -- `DOCKERHUB_TOKEN`: Token de acesso do Docker Hub - -**Como configurar:** -1. Vá para: `Settings` → `Secrets and variables` → `Actions` -2. Clique em `New repository secret` -3. Adicione os secrets acima - -### 2. Token do Docker Hub -Para criar um token do Docker Hub: -1. Acesse: https://hub.docker.com/settings/security -2. Clique em `New Access Token` -3. Nome: `github-actions` -4. Permissões: `Read, Write, Delete` -5. Copie o token e adicione como `DOCKERHUB_TOKEN` - -## 🚀 Como Usar - -### 1. Build Automático -**Sempre que você fizer push para `main` ou `develop`:** -- ✅ Build automático da imagem -- ✅ Push para Docker Hub -- ✅ Tag `latest` atualizada - -```bash -# Push para main (atualiza latest) -git push origin main - -# Push para develop (atualiza develop) -git push origin develop -``` - -### 2. Releases com Tags -**Para criar uma release:** - -```bash -# Usar o script de release -./scripts/release.sh patch # 1.0.0 -> 1.0.1 -./scripts/release.sh minor # 1.0.0 -> 1.1.0 -./scripts/release.sh major # 1.0.0 -> 2.0.0 -./scripts/release.sh custom 2.0.0-beta.1 - -# Ou criar tag manualmente -git tag v1.0.0 -git push origin v1.0.0 -``` - -### 3. Build Manual -**Para buildar manualmente:** -1. Vá para: `Actions` → `Build and Push Image to Docker Hub` -2. Clique em `Run workflow` -3. Escolha a branch -4. Opcionalmente, defina uma tag customizada -5. Clique em `Run workflow` - -## 📦 Tags Geradas - -### Branch `main` -- `andersonid/resource-governance:latest` (sempre atualizada) -- `andersonid/resource-governance:COMMIT_SHA` (específica do commit) - -### Branch `develop` -- `andersonid/resource-governance:develop` (sempre atualizada) -- `andersonid/resource-governance:develop-COMMIT_SHA` (específica do commit) - -### Tags (ex: v1.0.0) -- `andersonid/resource-governance:v1.0.0` (específica da tag) -- `andersonid/resource-governance:latest` (atualizada) - -### Pull Requests -- `andersonid/resource-governance:pr-COMMIT_SHA` (apenas para teste) - -## 🔍 Monitoramento - -### Verificar Status do Build -```bash -# Listar últimos builds -gh run list --repo andersonid/openshift-resource-governance --workflow="build-only.yml" - -# Ver logs de um build específico -gh run view RUN_ID --repo andersonid/openshift-resource-governance --log - -# Ver status em tempo real -gh run watch --repo andersonid/openshift-resource-governance -``` - -### Verificar Imagens no Docker Hub -- **Docker Hub**: https://hub.docker.com/r/andersonid/resource-governance/tags -- **GitHub Releases**: https://github.com/andersonid/openshift-resource-governance/releases - -## 🛠️ Troubleshooting - -### Build Falhou -1. **Verificar logs:** - ```bash - gh run view RUN_ID --repo andersonid/openshift-resource-governance --log-failed - ``` - -2. **Problemas comuns:** - - **Docker Hub login falhou**: Verificar `DOCKERHUB_TOKEN` - - **Build falhou**: Verificar sintaxe do código Python - - **Push falhou**: Verificar permissões do token - -### Imagem Não Atualizada -1. **Verificar se o build foi concluído:** - ```bash - gh run list --repo andersonid/openshift-resource-governance --workflow="build-only.yml" --status=completed - ``` - -2. **Verificar tags no Docker Hub:** - ```bash - docker pull andersonid/resource-governance:latest - docker inspect andersonid/resource-governance:latest - ``` - -### Rebuild Manual -Se precisar rebuildar uma versão específica: -```bash -# Fazer push vazio para triggerar build -git commit --allow-empty -m "Trigger rebuild" -git push origin main -``` - -## 📊 Workflow Detalhado - -### 1. Trigger -- **Push para main/develop**: Build automático -- **Tag push**: Build + Release -- **Pull Request**: Build para teste -- **Manual dispatch**: Build com tag customizada - -### 2. Build Process -1. **Checkout** do código -2. **Syntax check** do Python -3. **Setup Podman** (Docker alternative) -4. **Login** no Docker Hub -5. **Determine tags** baseado no trigger -6. **Build** da imagem com cache -7. **Tag** da imagem -8. **Push** para Docker Hub -9. **Create release** (se for tag) - -### 3. Output -- **Imagem Docker** disponível no Docker Hub -- **GitHub Release** (se for tag) -- **Logs detalhados** no GitHub Actions - -## 🎯 Melhores Práticas - -### 1. Versionamento -- Use **semantic versioning** (ex: 1.0.0, 1.0.1, 1.1.0) -- Use o script `./scripts/release.sh` para releases -- Teste em `develop` antes de fazer merge para `main` - -### 2. Deploy -- Use `andersonid/resource-governance:latest` para desenvolvimento -- Use `andersonid/resource-governance:v1.0.0` para produção -- Sempre teste a imagem antes de fazer deploy em produção - -### 3. Monitoramento -- Verifique os logs do GitHub Actions regularmente -- Monitore o Docker Hub para verificar se as imagens estão sendo atualizadas -- Use `gh` CLI para monitoramento rápido - -## 🔗 Links Úteis - -- **GitHub Actions**: https://github.com/andersonid/openshift-resource-governance/actions -- **Docker Hub**: https://hub.docker.com/r/andersonid/resource-governance -- **GitHub Releases**: https://github.com/andersonid/openshift-resource-governance/releases -- **Workflow File**: `.github/workflows/build-only.yml` - ---- - -**Desenvolvido por:** Anderson Nobre -**Suporte:** Abra uma issue no GitHub se tiver problemas diff --git a/QUICK-START.md b/QUICK-START.md deleted file mode 100644 index f960a70..0000000 --- a/QUICK-START.md +++ /dev/null @@ -1,54 +0,0 @@ -# 🚀 Quick Start - OpenShift Resource Governance Tool - -**⚠️ NOTA: Este guia está desatualizado. Use o README.md principal para instruções atuais.** - -## ⚡ Deploy em 3 Passos - -### 1. Clone o Repositório -```bash -git clone https://github.com/andersonid/openshift-resource-governance.git -cd openshift-resource-governance -``` - -### 2. Login no OpenShift -```bash -oc login -``` - -### 3. Deploy Automático -```bash -./openshift-deploy.sh -``` - -## 🎯 Pronto! - -A aplicação estará disponível em: -- **URL**: `https://resource-governance-route-resource-governance.apps.openshift.local` -- **API**: `https://resource-governance-route-resource-governance.apps.openshift.local/api/v1/cluster/status` - -## 📊 O que você terá: - -✅ **Dashboard Web** com estatísticas do cluster -✅ **Validações automáticas** de recursos -✅ **Relatórios** em JSON, CSV e PDF -✅ **Integração VPA** para recomendações -✅ **Integração Prometheus** para métricas reais - -## 🔧 Personalização - -Edite o ConfigMap para ajustar: -```bash -oc edit configmap resource-governance-config -n resource-governance -``` - -## 📚 Documentação Completa - -- [README.md](README.md) - Documentação completa -- [DEPLOY.md](DEPLOY.md) - Guia detalhado de deploy -- [GitHub Repository](https://github.com/andersonid/openshift-resource-governance) - -## 🆘 Suporte - -- **Issues**: [GitHub Issues](https://github.com/andersonid/openshift-resource-governance/issues) -- **Logs**: `oc logs -f daemonset/resource-governance -n resource-governance` -- **Status**: `oc get all -n resource-governance` diff --git a/README-DEPLOYMENT.md b/README-DEPLOYMENT.md deleted file mode 100644 index 97fb9f5..0000000 --- a/README-DEPLOYMENT.md +++ /dev/null @@ -1,246 +0,0 @@ -# 🚀 OpenShift Resource Governance - Guia de Deploy - -## 📋 Visão Geral - -Esta aplicação monitora e analisa recursos (CPU/Memory) de pods em clusters OpenShift, fornecendo validações e recomendações baseadas em melhores práticas. - -**⚠️ NOTA: Este guia está desatualizado. Use o README.md principal para instruções atuais.** - -## 🔧 Pré-requisitos - -- **OpenShift CLI (oc)** instalado e configurado -- **Acesso a um cluster OpenShift** (público ou privado) -- **Permissões de cluster-admin** ou admin do namespace - -## 🚀 Deploy Rápido - -### 1. Clone o repositório -```bash -git clone https://github.com/andersonid/openshift-resource-governance.git -cd openshift-resource-governance -``` - -### 2. Faça login no OpenShift -```bash -oc login https://your-cluster.com -# Ou para clusters internos: -oc login https://api.internal-cluster.com --token=your-token -``` - -### 3. Deploy da aplicação -```bash -# Deploy simples -./deploy-to-cluster.sh - -# Deploy com imagem específica -./deploy-to-cluster.sh andersonid/resource-governance:v1.0.0 - -# Deploy zero-downtime (recomendado para produção) -./deploy-zero-downtime.sh -``` - -## 🌐 Acesso à Aplicação - -### Via OpenShift Route (recomendado) -```bash -# Obter URL da rota -oc get route resource-governance-route -n resource-governance - -# Acessar no navegador -# https://resource-governance-route-your-cluster.com -``` - -### Via Port-Forward (desenvolvimento) -```bash -# Iniciar port-forward -oc port-forward service/resource-governance-service 8080:8080 -n resource-governance - -# Acessar no navegador -# http://localhost:8080 -``` - -## 🔄 Atualizações - -### Atualização Automática (GitHub Actions) -- Push para branch `main` → Build automático da imagem -- Imagem disponível em: `andersonid/resource-governance:latest` - -### Atualização Manual -```bash -# 1. Fazer pull da nova imagem -oc set image deployment/resource-governance resource-governance=andersonid/resource-governance:latest -n resource-governance - -# 2. Aguardar rollout -oc rollout status deployment/resource-governance -n resource-governance - -# 3. Verificar status -oc get pods -n resource-governance -``` - -## 🛠️ Configuração Avançada - -### ConfigMap -```bash -# Editar configurações -oc edit configmap resource-governance-config -n resource-governance - -# Aplicar mudanças -oc rollout restart deployment/resource-governance -n resource-governance -``` - -### Recursos e Limites -```bash -# Verificar recursos atuais -oc describe deployment resource-governance -n resource-governance - -# Ajustar recursos (se necessário) -oc patch deployment resource-governance -n resource-governance -p '{"spec":{"template":{"spec":{"containers":[{"name":"resource-governance","resources":{"requests":{"cpu":"100m","memory":"256Mi"},"limits":{"cpu":"500m","memory":"1Gi"}}}]}}}}' -``` - -## 🔍 Troubleshooting - -### Verificar Status -```bash -# Status geral -oc get all -n resource-governance - -# Logs da aplicação -oc logs -f deployment/resource-governance -n resource-governance - -# Eventos do namespace -oc get events -n resource-governance --sort-by='.lastTimestamp' -``` - -### Problemas Comuns - -#### 1. Pod não inicia -```bash -# Verificar logs -oc logs deployment/resource-governance -n resource-governance - -# Verificar eventos -oc describe pod -l app.kubernetes.io/name=resource-governance -n resource-governance -``` - -#### 2. Erro de permissão -```bash -# Verificar RBAC -oc get clusterrole resource-governance-role -oc get clusterrolebinding resource-governance-binding - -# Recriar RBAC se necessário -oc apply -f k8s/rbac.yaml -``` - -#### 3. Imagem não encontrada -```bash -# Verificar se a imagem existe -oc describe deployment resource-governance -n resource-governance - -# Forçar pull da imagem -oc set image deployment/resource-governance resource-governance=andersonid/resource-governance:latest -n resource-governance -``` - -## 📊 Monitoramento - -### Health Checks -```bash -# Health check da aplicação -curl http://localhost:8080/api/v1/health - -# Status do cluster -curl http://localhost:8080/api/v1/status -``` - -### Métricas -- **Total de Pods**: Número total de pods analisados -- **Namespaces**: Número de namespaces monitorados -- **Problemas Críticos**: Validações com severidade crítica -- **Análise Histórica**: Dados do Prometheus (se disponível) - -## 🔐 Segurança - -### RBAC -A aplicação usa um ServiceAccount com permissões mínimas necessárias: -- `get`, `list` pods em todos os namespaces -- `get`, `list` nodes -- `get`, `list` VPA resources - -### Network Policies -Para clusters com Network Policies ativas, adicione: -```yaml -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: resource-governance-netpol - namespace: resource-governance -spec: - podSelector: - matchLabels: - app.kubernetes.io/name: resource-governance - policyTypes: - - Ingress - - Egress - ingress: - - from: [] - egress: - - to: [] -``` - -## 📝 Logs e Debugging - -### Logs da Aplicação -```bash -# Logs em tempo real -oc logs -f deployment/resource-governance -n resource-governance - -# Logs com timestamp -oc logs deployment/resource-governance -n resource-governance --timestamps=true -``` - -### Debug de Conectividade -```bash -# Testar conectividade com API do Kubernetes -oc exec deployment/resource-governance -n resource-governance -- curl -k https://kubernetes.default.svc.cluster.local/api/v1/pods - -# Testar conectividade com Prometheus (se configurado) -oc exec deployment/resource-governance -n resource-governance -- curl http://prometheus.openshift-monitoring.svc.cluster.local:9090/api/v1/query -``` - -## 🆘 Suporte - -### Informações do Cluster -```bash -# Versão do OpenShift -oc version - -# Informações do cluster -oc cluster-info - -# Recursos disponíveis -oc get nodes -oc top nodes -``` - -### Coletar Informações para Debug -```bash -# Script de diagnóstico -oc get all -n resource-governance -o yaml > resource-governance-debug.yaml -oc describe deployment resource-governance -n resource-governance >> resource-governance-debug.yaml -oc logs deployment/resource-governance -n resource-governance >> resource-governance-debug.yaml -``` - ---- - -## 🎯 Próximos Passos - -1. **Configure alertas** para problemas críticos -2. **Integre com Prometheus** para análise histórica -3. **Configure VPA** para namespaces críticos -4. **Personalize validações** conforme suas políticas - ---- - -**Desenvolvido por:** Anderson Nobre -**Repositório:** https://github.com/andersonid/openshift-resource-governance -**Suporte:** Abra uma issue no GitHub