Fix: GitHub Actions for public clusters + deployment guide for colleagues
This commit is contained in:
244
README-DEPLOYMENT.md
Normal file
244
README-DEPLOYMENT.md
Normal file
@@ -0,0 +1,244 @@
|
||||
# 🚀 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.
|
||||
|
||||
## 🔧 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