Files
openshift-resource-governance/README-DEPLOYMENT.md

6.3 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.

⚠️ 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

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, list pods em todos os namespaces
  • get, list nodes
  • get, list VPA 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

  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