Aula 08 - Cluster Kubernetes HA: - Setup interativo com OpenTofu para Talos na Hetzner - CCM, CSI Driver, Cluster Autoscaler, Metrics Server - NGINX Ingress com LoadBalancer (HTTP/HTTPS/SSH) Aula 09 - n8n na Hetzner: - Deploy via Helm com PostgreSQL e Redis - Suporte multi-tenant com add-client.sh - Integração com Hetzner CSI para volumes persistentes Aula 10 - GitLab na Hetzner: - Setup agnóstico: CloudFlare (trusted proxies) ou Let's Encrypt - Anti-affinity para distribuir webservice/sidekiq em nós diferentes - Container Registry e SSH via TCP passthrough - Documentação do erro 422 e solução com trustedCIDRsForXForwardedFor Melhorias gerais: - READMEs atualizados com arquitetura e troubleshooting - Scripts cleanup.sh para todas as aulas - CLAUDE.md atualizado com contexto do projeto
122 lines
3.7 KiB
Bash
Executable File
122 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# =============================================================================
|
|
# Instala o Metrics Server para suporte a HPA e kubectl top
|
|
# =============================================================================
|
|
#
|
|
# O Metrics Server é necessário para:
|
|
# - Horizontal Pod Autoscaler (HPA) baseado em CPU/memória
|
|
# - kubectl top pods/nodes
|
|
# - Decisões de scheduling baseadas em métricas
|
|
#
|
|
# Pré-requisitos:
|
|
# - Cluster Kubernetes rodando
|
|
# - Helm 3.x instalado
|
|
#
|
|
# Uso:
|
|
# ./install-metrics-server.sh
|
|
#
|
|
# =============================================================================
|
|
|
|
set -e
|
|
|
|
# Cores para output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
log_success() { echo -e "${GREEN}[OK]${NC} $1"; }
|
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[ERRO]${NC} $1"; }
|
|
|
|
# =============================================================================
|
|
# VERIFICAÇÕES
|
|
# =============================================================================
|
|
|
|
log_info "Verificando pré-requisitos..."
|
|
|
|
if ! command -v kubectl &> /dev/null; then
|
|
log_error "kubectl não encontrado"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v helm &> /dev/null; then
|
|
log_error "Helm não encontrado"
|
|
exit 1
|
|
fi
|
|
|
|
# Verificar conexão com o cluster
|
|
if ! kubectl cluster-info &> /dev/null; then
|
|
log_error "Não foi possível conectar ao cluster"
|
|
log_error "Verifique se KUBECONFIG está configurado corretamente"
|
|
exit 1
|
|
fi
|
|
|
|
log_success "Pré-requisitos OK"
|
|
|
|
# =============================================================================
|
|
# INSTALAR METRICS SERVER
|
|
# =============================================================================
|
|
|
|
log_info "Adicionando repositório Helm..."
|
|
helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/ 2>/dev/null || true
|
|
helm repo update
|
|
|
|
log_info "Instalando Metrics Server..."
|
|
|
|
# Nota: --kubelet-insecure-tls é necessário para Talos Linux
|
|
# pois os certificados do kubelet não são assinados pela CA do cluster
|
|
helm upgrade --install metrics-server metrics-server/metrics-server \
|
|
-n kube-system \
|
|
--set 'args[0]=--kubelet-insecure-tls' \
|
|
--wait \
|
|
--timeout 2m
|
|
|
|
log_success "Metrics Server instalado!"
|
|
|
|
# =============================================================================
|
|
# VERIFICAR INSTALAÇÃO
|
|
# =============================================================================
|
|
|
|
log_info "Aguardando Metrics Server ficar pronto..."
|
|
|
|
for i in {1..30}; do
|
|
if kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes" &> /dev/null; then
|
|
break
|
|
fi
|
|
echo -n "."
|
|
sleep 2
|
|
done
|
|
|
|
echo ""
|
|
|
|
# Testar se as métricas estão disponíveis
|
|
if kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes" &> /dev/null; then
|
|
log_success "Metrics API disponível!"
|
|
echo ""
|
|
log_info "Testando kubectl top nodes..."
|
|
kubectl top nodes 2>/dev/null || log_warn "Métricas ainda sendo coletadas, aguarde alguns segundos..."
|
|
else
|
|
log_warn "Metrics API ainda não disponível"
|
|
log_warn "Aguarde alguns segundos e execute: kubectl top nodes"
|
|
fi
|
|
|
|
# =============================================================================
|
|
# RESUMO
|
|
# =============================================================================
|
|
|
|
echo ""
|
|
echo "=============================================="
|
|
echo -e "${GREEN} Metrics Server Instalado!${NC}"
|
|
echo "=============================================="
|
|
echo ""
|
|
echo "Agora você pode usar:"
|
|
echo " kubectl top nodes # Ver uso de recursos dos nós"
|
|
echo " kubectl top pods # Ver uso de recursos dos pods"
|
|
echo ""
|
|
echo "HPAs agora podem escalar baseado em CPU/memória!"
|
|
echo ""
|
|
echo "=============================================="
|