#!/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 "=============================================="