fix(aula-05): otimizar KEDA para detecção instantânea de crashes

- Simplificar ScaledObject: usar apenas trigger de pods unavailable
  (instantâneo) em vez de restarts (requeria janela de tempo)
- Adicionar VMServiceScrape com scrape interval de 5s para detecção
  rápida pelo Victoria Metrics (default era 30s)
- Acelerar scale down: stabilizationWindow=0, remove 10 pods/s
- Query intuitiva: 5 + (unavailable * 2) = réplicas desejadas
- Usar metricType AverageValue para cálculo correto de réplicas
- Limpar mensagem desnecessária do teste de stress
This commit is contained in:
ArgoCD Setup
2026-01-23 11:07:33 -03:00
parent 3facd5cbae
commit e15138a734
4 changed files with 98 additions and 44 deletions

View File

@@ -3,10 +3,35 @@
# Teste de Stress para verificar resiliência do Ingress + Auto-Scaling
# Uso: ./teste-stress.sh [URL] [NUM_REQUESTS]
# Cores
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
URL="${1:-http://localhost}"
TOTAL="${2:-100}"
TIMEOUT=120
# =============================================================================
# VERIFICACAO DO NGINX INGRESS CONTROLLER
# =============================================================================
echo -e "${YELLOW}[INFO]${NC} Verificando NGINX Ingress Controller..."
if ! kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx 2>/dev/null | grep -q "Running"; then
echo -e "${RED}[ERRO]${NC} NGINX Ingress Controller NAO esta rodando!"
echo ""
echo "Para resolver, execute:"
echo ""
echo " ./setup.sh"
echo ""
exit 1
fi
echo -e "${GREEN}[OK]${NC} NGINX Ingress Controller esta rodando"
echo ""
echo "============================================"
echo " Teste de Stress - Auto-Scaling com KEDA"
echo "============================================"
@@ -24,7 +49,7 @@ for i in $(seq 1 $TOTAL); do
if echo "$RESULT" | grep -q "Req ->"; then
SUCCESS=$((SUCCESS + 1))
echo -e "[$i/$TOTAL] \033[32mOK\033[0m - $RESULT"
echo -e "[$i/$TOTAL] ${GREEN}OK${NC} - $RESULT"
else
FAIL=$((FAIL + 1))
# Extrai apenas o título do erro se for HTML
@@ -33,7 +58,7 @@ for i in $(seq 1 $TOTAL); do
else
ERROR="$RESULT"
fi
echo -e "[$i/$TOTAL] \033[31mFALHA\033[0m - $ERROR"
echo -e "[$i/$TOTAL] ${RED}FALHA${NC} - $ERROR"
fi
sleep 0.2
@@ -44,14 +69,14 @@ echo "============================================"
echo " Resultado Final"
echo "============================================"
PERCENT=$((SUCCESS * 100 / TOTAL))
echo -e "Sucesso: \033[32m$SUCCESS\033[0m / $TOTAL ($PERCENT%)"
echo -e "Falhas: \033[31m$FAIL\033[0m / $TOTAL"
echo -e "Sucesso: ${GREEN}$SUCCESS${NC} / $TOTAL ($PERCENT%)"
echo -e "Falhas: ${RED}$FAIL${NC} / $TOTAL"
echo "============================================"
if [ $FAIL -eq 0 ]; then
echo -e "\033[32m*** ZERO FALHAS! ***\033[0m"
echo -e "${GREEN}*** ZERO FALHAS! ***${NC}"
elif [ $PERCENT -ge 95 ]; then
echo -e "\033[33mBom resultado (>= 95%)\033[0m"
echo -e "${YELLOW}Bom resultado (>= 95%)${NC}"
else
echo -e "\033[31mResultado abaixo do esperado\033[0m"
echo -e "${RED}Resultado abaixo do esperado${NC}"
fi