6.2 KiB
6.2 KiB
🚀 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
git clone https://github.com/andersonid/openshift-resource-governance.git
cd openshift-resource-governance
2. Faça login no OpenShift
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
# 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)
# 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)
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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,listpods em todos os namespacesget,listnodesget,listVPA resources
Network Policies
Para clusters com Network Policies ativas, adicione:
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
# 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
# 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
# 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
# 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
- Configure alertas para problemas críticos
- Integre com Prometheus para análise histórica
- Configure VPA para namespaces críticos
- 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