Clean: Remove all outdated documentation files, keep only essential docs
This commit is contained in:
@@ -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/<tag>` - 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
|
|
||||||
291
DEPLOY.md
291
DEPLOY.md
@@ -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 <pod-name> -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 <pod-name> -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 <pod-name> -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 <pod-name> -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
|
|
||||||
@@ -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 <pod-name> -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
|
|
||||||
@@ -6,13 +6,8 @@
|
|||||||
- **[README.md](README.md)** - 📖 **Documentação principal e completa**
|
- **[README.md](README.md)** - 📖 **Documentação principal e completa**
|
||||||
- **[AIAgents-Support.md](AIAgents-Support.md)** - 🤖 Suporte para agentes de IA
|
- **[AIAgents-Support.md](AIAgents-Support.md)** - 🤖 Suporte para agentes de IA
|
||||||
|
|
||||||
### ⚠️ **Documentação Desatualizada (Referência)**
|
### ✅ **Documentação Limpa e Organizada**
|
||||||
- [AUTO-DEPLOY-GUIDE.md](AUTO-DEPLOY-GUIDE.md) - Deploy automático (desatualizado)
|
Todos os arquivos desatualizados foram removidos para manter apenas a documentação atual e relevante.
|
||||||
- [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)
|
|
||||||
|
|
||||||
## 🚀 Como Usar
|
## 🚀 Como Usar
|
||||||
|
|
||||||
@@ -30,18 +25,15 @@
|
|||||||
|---------|--------|-------------------|-------------|
|
|---------|--------|-------------------|-------------|
|
||||||
| README.md | ✅ Ativo | 2025-01-27 | Documentação principal atualizada |
|
| README.md | ✅ Ativo | 2025-01-27 | Documentação principal atualizada |
|
||||||
| AIAgents-Support.md | ✅ Ativo | 2025-01-27 | Suporte para IA agents |
|
| AIAgents-Support.md | ✅ Ativo | 2025-01-27 | Suporte para IA agents |
|
||||||
| AUTO-DEPLOY-GUIDE.md | ⚠️ Desatualizado | - | Menciona daemonset, scripts antigos |
|
| DOCUMENTATION.md | ✅ Ativo | 2025-01-27 | Índice da documentação |
|
||||||
| GITHUB-ACTIONS-GUIDE.md | ⚠️ Desatualizado | - | Nome da imagem incorreto |
|
|
||||||
| README-DEPLOYMENT.md | ⚠️ Desatualizado | - | Menciona daemonset, scripts antigos |
|
**Arquivos removidos:** 6 arquivos desatualizados foram removidos para manter a documentação limpa e organizada.
|
||||||
| DOCKERHUB-SETUP.md | ⚠️ Desatualizado | - | Nome da imagem incorreto |
|
|
||||||
| DEPLOY.md | ⚠️ Desatualizado | - | Menciona daemonset, scripts antigos |
|
|
||||||
| QUICK-START.md | ⚠️ Desatualizado | - | Menciona daemonset, scripts antigos |
|
|
||||||
|
|
||||||
## 🔄 Próximos Passos
|
## 🔄 Próximos Passos
|
||||||
|
|
||||||
1. **Manter README.md atualizado** como fonte única da verdade
|
1. **Manter README.md atualizado** como fonte única da verdade
|
||||||
2. **Considerar remover arquivos desatualizados** em versão futura
|
2. **Atualizar AIAgents-Support.md** conforme necessário
|
||||||
3. **Atualizar AIAgents-Support.md** conforme necessário
|
3. **Manter DOCUMENTATION.md** como índice da documentação
|
||||||
|
|
||||||
## 📞 Suporte
|
## 📞 Suporte
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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 <seu-cluster-openshift>
|
|
||||||
```
|
|
||||||
|
|
||||||
### 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`
|
|
||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user