refactor(aula-12): simplificar para helm install direto
Remove indireção GitOps (factory/monitoring repo) que adicionava complexidade sem valor pedagógico. O foco da aula é observabilidade, não pipeline de deploy. Antes: setup.sh → cria repo → push manifests → ArgoCD app → sync → instala Agora: setup.sh → helm install → pronto README reescrito com foco em "o que monitorar" (PVC cheio, CrashLoop, CPU saturada) em vez de "como instalar via GitOps".
This commit is contained in:
@@ -1,163 +1,66 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# Aula 12 - Cleanup Victoria Metrics
|
||||
# =============================================================================
|
||||
#
|
||||
# Remove Victoria Metrics stack via ArgoCD
|
||||
#
|
||||
# Aula 12 - Cleanup (Remove Victoria Metrics)
|
||||
# =============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
# Cores para output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
CYAN='\033[0;36m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Funções de log
|
||||
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}[ERROR]${NC} $1"; }
|
||||
|
||||
# Diretório do script
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ENV_FILE="${SCRIPT_DIR}/.env"
|
||||
|
||||
# Carregar configuração
|
||||
if [[ -f "$ENV_FILE" ]]; then
|
||||
source "$ENV_FILE"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Cleanup Victoria Metrics"
|
||||
echo "=========================================="
|
||||
echo -e "${CYAN}============================================${NC}"
|
||||
echo -e "${CYAN} Cleanup - Aula 12 (Victoria Metrics)${NC}"
|
||||
echo -e "${CYAN}============================================${NC}"
|
||||
echo ""
|
||||
echo "Este script irá remover:"
|
||||
echo " - ArgoCD Application 'monitoring'"
|
||||
echo " - Todos os recursos no namespace 'monitoring'"
|
||||
echo " - Secret do repositório no ArgoCD"
|
||||
echo ""
|
||||
echo "ATENÇÃO: Dados de métricas serão PERDIDOS!"
|
||||
echo ""
|
||||
read -p "Continuar? [y/N]: " CONFIRM
|
||||
|
||||
if [[ "$CONFIRM" != "y" && "$CONFIRM" != "Y" ]]; then
|
||||
log_info "Cancelado pelo usuário"
|
||||
log_warn "Isso vai remover:"
|
||||
echo " - Victoria Metrics Stack (Helm release)"
|
||||
echo " - Namespace monitoring (dados de métricas serão perdidos)"
|
||||
echo " - Arquivo .env"
|
||||
echo ""
|
||||
read -p "Continuar? (digite 'sim' para confirmar): " confirm
|
||||
|
||||
if [ "$confirm" != "sim" ]; then
|
||||
log_info "Operação cancelada"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# REMOVER ARGOCD APPLICATION
|
||||
# =============================================================================
|
||||
echo ""
|
||||
|
||||
log_info "Removendo ArgoCD Application..."
|
||||
|
||||
if kubectl get application monitoring -n argocd &> /dev/null; then
|
||||
# Remover finalizers para permitir deleção
|
||||
kubectl patch application monitoring -n argocd \
|
||||
--type json \
|
||||
--patch='[{"op": "remove", "path": "/metadata/finalizers"}]' 2>/dev/null || true
|
||||
|
||||
kubectl delete application monitoring -n argocd --wait=false
|
||||
log_success "ArgoCD Application removida"
|
||||
# Remover Helm release
|
||||
log_info "Removendo Victoria Metrics Stack..."
|
||||
if helm status monitoring -n monitoring &> /dev/null; then
|
||||
helm uninstall monitoring -n monitoring --wait 2>/dev/null || true
|
||||
log_success "Helm release removido"
|
||||
else
|
||||
log_info "ArgoCD Application já não existe"
|
||||
log_info "Helm release não encontrado"
|
||||
fi
|
||||
|
||||
# Aguardar recursos serem deletados pelo ArgoCD
|
||||
log_info "Aguardando ArgoCD deletar recursos..."
|
||||
sleep 5
|
||||
# Remover PVCs
|
||||
log_info "Removendo PVCs..."
|
||||
kubectl delete pvc --all -n monitoring --wait=false 2>/dev/null || true
|
||||
|
||||
# =============================================================================
|
||||
# REMOVER NAMESPACE
|
||||
# =============================================================================
|
||||
# Remover namespace
|
||||
log_info "Removendo namespace..."
|
||||
kubectl delete namespace monitoring --timeout=60s 2>/dev/null || true
|
||||
log_success "Namespace removido"
|
||||
|
||||
log_info "Removendo namespace 'monitoring'..."
|
||||
|
||||
if kubectl get namespace monitoring &> /dev/null; then
|
||||
# Forçar remoção de recursos se necessário
|
||||
kubectl delete all --all -n monitoring --timeout=60s 2>/dev/null || true
|
||||
kubectl delete pvc --all -n monitoring --timeout=60s 2>/dev/null || true
|
||||
kubectl delete configmap --all -n monitoring --timeout=60s 2>/dev/null || true
|
||||
kubectl delete secret --all -n monitoring --timeout=60s 2>/dev/null || true
|
||||
|
||||
kubectl delete namespace monitoring --timeout=120s 2>/dev/null || {
|
||||
log_warn "Timeout deletando namespace, forçando..."
|
||||
kubectl get namespace monitoring -o json | \
|
||||
jq '.spec.finalizers = []' | \
|
||||
kubectl replace --raw "/api/v1/namespaces/monitoring/finalize" -f - 2>/dev/null || true
|
||||
}
|
||||
log_success "Namespace 'monitoring' removido"
|
||||
else
|
||||
log_info "Namespace 'monitoring' já não existe"
|
||||
# Remover .env
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
if [[ -f "${SCRIPT_DIR}/.env" ]]; then
|
||||
rm "${SCRIPT_DIR}/.env"
|
||||
log_info ".env removido"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# REMOVER SECRET DO REPOSITÓRIO
|
||||
# =============================================================================
|
||||
|
||||
log_info "Removendo secret do repositório..."
|
||||
|
||||
if kubectl get secret factory-monitoring-repo -n argocd &> /dev/null; then
|
||||
kubectl delete secret factory-monitoring-repo -n argocd
|
||||
log_success "Secret do repositório removido"
|
||||
else
|
||||
log_info "Secret do repositório já não existe"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# REMOVER REPOSITÓRIO GITEA (OPCIONAL)
|
||||
# =============================================================================
|
||||
|
||||
if [[ -n "$GITEA_HOST" && -n "$GITEA_TOKEN" ]]; then
|
||||
echo ""
|
||||
read -p "Remover repositório 'factory/monitoring' do Gitea? [y/N]: " REMOVE_PROJECT
|
||||
|
||||
if [[ "$REMOVE_PROJECT" == "y" || "$REMOVE_PROJECT" == "Y" ]]; then
|
||||
log_info "Removendo repositório do Gitea..."
|
||||
|
||||
DELETE_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" --request DELETE \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
"https://${GITEA_HOST}/api/v1/repos/factory/monitoring")
|
||||
|
||||
if [[ "$DELETE_RESPONSE" == "204" ]]; then
|
||||
log_success "Repositório removido do Gitea"
|
||||
else
|
||||
log_info "Repositório não encontrado no Gitea (HTTP ${DELETE_RESPONSE})"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# LIMPAR ARQUIVO .ENV
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
read -p "Remover arquivo de configuração local (.env)? [y/N]: " REMOVE_ENV
|
||||
|
||||
if [[ "$REMOVE_ENV" == "y" || "$REMOVE_ENV" == "Y" ]]; then
|
||||
rm -f "$ENV_FILE"
|
||||
log_success "Arquivo .env removido"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# FINALIZAÇÃO
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Cleanup Concluído!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Recursos removidos:"
|
||||
echo " - ArgoCD Application 'monitoring'"
|
||||
echo " - Namespace 'monitoring'"
|
||||
echo " - Secret do repositório no ArgoCD"
|
||||
echo ""
|
||||
echo "Para reinstalar:"
|
||||
echo " ./setup.sh"
|
||||
log_success "Cleanup concluído!"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user