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:
447
aula-12/setup.sh
447
aula-12/setup.sh
@@ -1,40 +1,35 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# Aula 12 - Victoria Metrics (Observabilidade via GitOps)
|
||||
# Aula 12 - Victoria Metrics (Observabilidade)
|
||||
# =============================================================================
|
||||
#
|
||||
# Este script instala Victoria Metrics stack usando ArgoCD (GitOps):
|
||||
# 1. Cria projeto 'factory/monitoring' no Gitea
|
||||
# 2. Push dos manifests GitOps
|
||||
# 3. Cria ArgoCD Application
|
||||
# 4. Victoria Metrics + Grafana são sincronizados automaticamente
|
||||
# Este script instala o stack de monitoramento via Helm:
|
||||
# 1. Victoria Metrics (coleta + storage de métricas)
|
||||
# 2. Grafana (dashboards)
|
||||
# 3. Alertas pré-configurados
|
||||
#
|
||||
# Pré-requisitos:
|
||||
# - Cluster Kubernetes (aula-08)
|
||||
# - ArgoCD instalado (aula-11)
|
||||
# - Gitea com org 'factory' (aula-10/11)
|
||||
# - kubectl e helm instalados
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
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"
|
||||
GITOPS_DIR="${SCRIPT_DIR}/gitops"
|
||||
|
||||
# =============================================================================
|
||||
# VERIFICAR PRÉ-REQUISITOS
|
||||
@@ -42,42 +37,18 @@ GITOPS_DIR="${SCRIPT_DIR}/gitops"
|
||||
|
||||
log_info "Verificando pré-requisitos..."
|
||||
|
||||
# Verificar kubectl
|
||||
if ! command -v kubectl &> /dev/null; then
|
||||
log_error "kubectl não encontrado. Instale com: brew install kubectl"
|
||||
log_error "kubectl não encontrado"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verificar helm
|
||||
if ! command -v helm &> /dev/null; then
|
||||
log_error "helm não encontrado. Instale com: brew install helm"
|
||||
log_error "helm não encontrado"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verificar git
|
||||
if ! command -v git &> /dev/null; then
|
||||
log_error "git não encontrado. Instale com: brew install git"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verificar conexão com cluster
|
||||
if ! kubectl cluster-info &> /dev/null; then
|
||||
log_error "Não foi possível conectar ao cluster Kubernetes"
|
||||
log_info "Verifique se KUBECONFIG está configurado corretamente"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verificar se ArgoCD está instalado
|
||||
if ! kubectl get namespace argocd &> /dev/null; then
|
||||
log_error "Namespace 'argocd' não encontrado"
|
||||
log_info "Execute primeiro a aula-11 para instalar o ArgoCD"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verificar se ArgoCD está rodando
|
||||
if ! kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server --no-headers 2>/dev/null | grep -q Running; then
|
||||
log_error "ArgoCD server não está rodando"
|
||||
log_info "Verifique: kubectl get pods -n argocd"
|
||||
log_error "Não foi possível conectar ao cluster"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -87,48 +58,31 @@ log_success "Pré-requisitos verificados"
|
||||
# CARREGAR CONFIGURAÇÃO
|
||||
# =============================================================================
|
||||
|
||||
# Carregar configuração local (se existir)
|
||||
if [[ -f "$ENV_FILE" ]]; then
|
||||
log_info "Carregando configuração local..."
|
||||
source "$ENV_FILE"
|
||||
fi
|
||||
|
||||
# Herdar configuração da aula-11
|
||||
AULA11_ENV="${SCRIPT_DIR}/../aula-11/.env"
|
||||
if [[ -f "$AULA11_ENV" ]]; then
|
||||
log_info "Herdando configuração da aula-11..."
|
||||
source "$AULA11_ENV"
|
||||
fi
|
||||
|
||||
# Herdar configuração da aula-10
|
||||
AULA10_ENV="${SCRIPT_DIR}/../aula-10/.env"
|
||||
if [[ -f "$AULA10_ENV" ]]; then
|
||||
log_info "Herdando configuração da aula-10..."
|
||||
source "$AULA10_ENV"
|
||||
fi
|
||||
# Herdar domínio da aula-10 ou aula-11
|
||||
for ENV_SRC in "${SCRIPT_DIR}/../aula-11/.env" "${SCRIPT_DIR}/../aula-10/.env"; do
|
||||
if [[ -f "$ENV_SRC" && -z "$DOMAIN" ]]; then
|
||||
source "$ENV_SRC"
|
||||
fi
|
||||
done
|
||||
|
||||
# =============================================================================
|
||||
# COLETAR CONFIGURAÇÃO
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Configuração Victoria Metrics (GitOps)"
|
||||
echo "=========================================="
|
||||
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
|
||||
echo -e "${CYAN} Victoria Metrics - Observabilidade${NC}"
|
||||
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
|
||||
# Gitea Host
|
||||
if [[ -z "$GITEA_HOST" ]]; then
|
||||
read -p "Hostname do Gitea (ex: gitea.kube.quest): " GITEA_HOST
|
||||
fi
|
||||
log_info "Gitea: https://${GITEA_HOST}"
|
||||
|
||||
# Extrair domínio base
|
||||
if [[ -z "$DOMAIN" ]]; then
|
||||
DOMAIN=$(echo "$GITEA_HOST" | sed 's/^[^.]*\.//')
|
||||
read -p "Domínio base (ex: kube.quest): " DOMAIN
|
||||
fi
|
||||
|
||||
# Grafana Host
|
||||
if [[ -z "$GRAFANA_HOST" ]]; then
|
||||
DEFAULT_GRAFANA="grafana.${DOMAIN}"
|
||||
read -p "Hostname do Grafana [${DEFAULT_GRAFANA}]: " GRAFANA_HOST
|
||||
@@ -136,334 +90,141 @@ if [[ -z "$GRAFANA_HOST" ]]; then
|
||||
fi
|
||||
log_info "Grafana: https://${GRAFANA_HOST}"
|
||||
|
||||
# Gitea Token (para criar projeto via API)
|
||||
if [[ -z "$GITEA_TOKEN" ]]; then
|
||||
echo ""
|
||||
echo "Token de acesso Gitea (para criar repositório via API):"
|
||||
echo " 1. Acesse https://${GITEA_HOST}/user/settings/applications"
|
||||
echo " 2. Crie um token com permissões de escrita"
|
||||
echo ""
|
||||
read -p "Gitea Token: " GITEA_TOKEN
|
||||
fi
|
||||
|
||||
# TLS (herdar da aula-11)
|
||||
# TLS
|
||||
if [[ -z "$USE_CLOUDFLARE" && -z "$USE_LETSENCRYPT" ]]; then
|
||||
echo ""
|
||||
echo "Configuração de TLS:"
|
||||
echo " 1) CloudFlare (proxy ativo - TLS na borda)"
|
||||
echo " 2) Let's Encrypt (cert-manager)"
|
||||
echo " 3) HTTP apenas (desenvolvimento)"
|
||||
echo " 1) Let's Encrypt (recomendado)"
|
||||
echo " 2) CloudFlare (proxy)"
|
||||
echo " 3) HTTP apenas"
|
||||
read -p "Escolha [1-3]: " TLS_CHOICE
|
||||
|
||||
case $TLS_CHOICE in
|
||||
1) USE_CLOUDFLARE=true; USE_LETSENCRYPT=false ;;
|
||||
2) USE_CLOUDFLARE=false; USE_LETSENCRYPT=true ;;
|
||||
1) USE_CLOUDFLARE=false; USE_LETSENCRYPT=true ;;
|
||||
2) USE_CLOUDFLARE=true; USE_LETSENCRYPT=false ;;
|
||||
*) USE_CLOUDFLARE=false; USE_LETSENCRYPT=false ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Salvar configuração
|
||||
# Salvar
|
||||
cat > "$ENV_FILE" << EOF
|
||||
# Configuração gerada pelo setup.sh
|
||||
# $(date)
|
||||
GITEA_HOST=${GITEA_HOST}
|
||||
GRAFANA_HOST=${GRAFANA_HOST}
|
||||
# Configuração gerada pelo setup.sh - $(date)
|
||||
DOMAIN=${DOMAIN}
|
||||
GRAFANA_HOST=${GRAFANA_HOST}
|
||||
USE_CLOUDFLARE=${USE_CLOUDFLARE}
|
||||
USE_LETSENCRYPT=${USE_LETSENCRYPT}
|
||||
GITEA_TOKEN=${GITEA_TOKEN}
|
||||
EOF
|
||||
|
||||
log_success "Configuração salva em ${ENV_FILE}"
|
||||
log_success "Configuração salva"
|
||||
|
||||
# =============================================================================
|
||||
# CRIAR REPOSITÓRIO NO GITEA (VIA API)
|
||||
# PREPARAR VALUES COM HOSTNAME DO GRAFANA
|
||||
# =============================================================================
|
||||
|
||||
log_info "Preparando configuração..."
|
||||
|
||||
VALUES_FILE="${SCRIPT_DIR}/gitops/apps/victoria-metrics/values.yaml"
|
||||
TEMP_VALUES=$(mktemp)
|
||||
sed "s/grafana\.kube\.quest/${GRAFANA_HOST}/g" "$VALUES_FILE" > "$TEMP_VALUES"
|
||||
|
||||
# Ajustar TLS no values
|
||||
if [[ "$USE_LETSENCRYPT" != "true" ]]; then
|
||||
# Remover anotação cert-manager se não usa Let's Encrypt
|
||||
sed -i.bak '/cert-manager.io\/cluster-issuer/d' "$TEMP_VALUES"
|
||||
rm -f "$TEMP_VALUES.bak"
|
||||
fi
|
||||
|
||||
if [[ "$USE_CLOUDFLARE" == "true" || "$USE_LETSENCRYPT" != "true" ]]; then
|
||||
# Remover bloco TLS se não usa Let's Encrypt
|
||||
sed -i.bak '/tls:/,/- grafana/d' "$TEMP_VALUES"
|
||||
rm -f "$TEMP_VALUES.bak"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# INSTALAR VIA HELM
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
log_info "=== Criando Repositório no Gitea ==="
|
||||
log_info "=== Instalando Victoria Metrics Stack ==="
|
||||
|
||||
# Verificar se org factory existe
|
||||
log_info "Verificando organização 'factory'..."
|
||||
ORG_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
"https://${GITEA_HOST}/api/v1/orgs/factory")
|
||||
helm repo add vm https://victoriametrics.github.io/helm-charts/ 2>/dev/null || true
|
||||
helm repo update vm
|
||||
|
||||
if [[ "$ORG_RESPONSE" != "200" ]]; then
|
||||
log_info "Criando organização 'factory'..."
|
||||
ORG_CREATE=$(curl -s --request POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data '{"username": "factory", "visibility": "limited"}' \
|
||||
"https://${GITEA_HOST}/api/v1/orgs")
|
||||
kubectl create namespace monitoring 2>/dev/null || true
|
||||
|
||||
ORG_NAME=$(echo "$ORG_CREATE" | grep -o '"username":"factory"' || true)
|
||||
|
||||
if [[ -z "$ORG_NAME" ]]; then
|
||||
log_error "Falha ao criar organização 'factory'"
|
||||
echo "$ORG_CREATE"
|
||||
exit 1
|
||||
fi
|
||||
log_success "Organização 'factory' criada"
|
||||
if helm status monitoring -n monitoring &> /dev/null; then
|
||||
log_warn "Já instalado. Atualizando..."
|
||||
HELM_CMD="upgrade"
|
||||
else
|
||||
log_success "Organização 'factory' já existe"
|
||||
HELM_CMD="install"
|
||||
fi
|
||||
|
||||
# Verificar se repositório monitoring existe
|
||||
log_info "Verificando repositório 'monitoring'..."
|
||||
REPO_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
"https://${GITEA_HOST}/api/v1/repos/factory/monitoring")
|
||||
helm ${HELM_CMD} monitoring vm/victoria-metrics-k8s-stack \
|
||||
--namespace monitoring \
|
||||
-f "$TEMP_VALUES" \
|
||||
--wait \
|
||||
--timeout 10m
|
||||
|
||||
if [[ "$REPO_RESPONSE" != "200" ]]; then
|
||||
log_info "Criando repositório 'monitoring'..."
|
||||
REPO_CREATE=$(curl -s --request POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data '{"name": "monitoring", "private": false, "auto_init": false}' \
|
||||
"https://${GITEA_HOST}/api/v1/orgs/factory/repos")
|
||||
rm -f "$TEMP_VALUES"
|
||||
|
||||
REPO_NAME=$(echo "$REPO_CREATE" | grep -o '"name":"monitoring"' || true)
|
||||
log_success "Victoria Metrics Stack instalado!"
|
||||
|
||||
if [[ -z "$REPO_NAME" ]]; then
|
||||
log_error "Falha ao criar repositório 'monitoring'"
|
||||
echo "$REPO_CREATE"
|
||||
exit 1
|
||||
fi
|
||||
log_success "Repositório 'monitoring' criado"
|
||||
else
|
||||
log_success "Repositório 'monitoring' já existe"
|
||||
# =============================================================================
|
||||
# APLICAR ALERTAS CUSTOMIZADOS
|
||||
# =============================================================================
|
||||
|
||||
if [[ -f "${SCRIPT_DIR}/gitops/apps/victoria-metrics/templates/alerts.yaml" ]]; then
|
||||
echo ""
|
||||
log_info "Aplicando alertas customizados..."
|
||||
kubectl apply -f "${SCRIPT_DIR}/gitops/apps/victoria-metrics/templates/alerts.yaml" -n monitoring 2>/dev/null || true
|
||||
log_success "Alertas aplicados"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# PUSH DOS MANIFESTS GITOPS
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
log_info "=== Push dos Manifests GitOps ==="
|
||||
|
||||
# Criar diretório temporário para clone
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
trap "rm -rf ${TEMP_DIR}" EXIT
|
||||
|
||||
cd "${TEMP_DIR}"
|
||||
|
||||
# Configurar git
|
||||
git config --global user.email "argocd@${DOMAIN}" 2>/dev/null || true
|
||||
git config --global user.name "ArgoCD Setup" 2>/dev/null || true
|
||||
|
||||
# Clone do repositório (usando token)
|
||||
log_info "Clonando repositório..."
|
||||
GITEA_USER=$(curl -s -H "Authorization: token ${GITEA_TOKEN}" "https://${GITEA_HOST}/api/v1/user" | grep -o '"login":"[^"]*"' | cut -d'"' -f4)
|
||||
GIT_URL="https://${GITEA_USER}:${GITEA_TOKEN}@${GITEA_HOST}/factory/monitoring.git"
|
||||
|
||||
if ! git clone "${GIT_URL}" monitoring 2>/dev/null; then
|
||||
# Repositório vazio, inicializar
|
||||
mkdir monitoring
|
||||
cd monitoring
|
||||
git init
|
||||
git remote add origin "${GIT_URL}"
|
||||
else
|
||||
cd monitoring
|
||||
fi
|
||||
|
||||
# Copiar arquivos GitOps
|
||||
log_info "Copiando manifests GitOps..."
|
||||
cp -r "${GITOPS_DIR}/apps" .
|
||||
|
||||
# Configurar values.yaml com hostname do Grafana
|
||||
log_info "Configurando Grafana hostname..."
|
||||
if [[ -f "apps/victoria-metrics/values.yaml" ]]; then
|
||||
sed -i.bak "s/GRAFANA_HOST_PLACEHOLDER/${GRAFANA_HOST}/g" apps/victoria-metrics/values.yaml
|
||||
rm -f apps/victoria-metrics/values.yaml.bak
|
||||
fi
|
||||
|
||||
# Commit e push
|
||||
git add -A
|
||||
if git diff --cached --quiet; then
|
||||
log_info "Nenhuma mudança para commit"
|
||||
else
|
||||
git commit -m "feat: Victoria Metrics stack configuration"
|
||||
log_info "Pushing para Gitea..."
|
||||
git push -u origin main 2>/dev/null || git push -u origin master 2>/dev/null || {
|
||||
# Primeiro push em repo vazio
|
||||
git push --set-upstream origin main 2>/dev/null || git push --set-upstream origin master
|
||||
}
|
||||
log_success "Manifests enviados para Gitea"
|
||||
fi
|
||||
|
||||
cd "${SCRIPT_DIR}"
|
||||
|
||||
# =============================================================================
|
||||
# CRIAR NAMESPACE MONITORING
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
log_info "=== Criando Namespace ==="
|
||||
|
||||
kubectl create namespace monitoring 2>/dev/null || log_info "Namespace 'monitoring' já existe"
|
||||
log_success "Namespace 'monitoring' pronto"
|
||||
|
||||
# =============================================================================
|
||||
# CONFIGURAR REPOSITÓRIO NO ARGOCD
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
log_info "=== Configurando Repositório no ArgoCD ==="
|
||||
|
||||
# Criar secret para o repositório
|
||||
log_info "Criando secret de acesso ao repositório..."
|
||||
kubectl apply -f - << EOF
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: factory-monitoring-repo
|
||||
namespace: argocd
|
||||
labels:
|
||||
argocd.argoproj.io/secret-type: repository
|
||||
stringData:
|
||||
type: git
|
||||
url: https://${GITEA_HOST}/factory/monitoring.git
|
||||
username: ${GITEA_USER}
|
||||
password: ${GITEA_TOKEN}
|
||||
EOF
|
||||
|
||||
log_success "Repositório configurado no ArgoCD"
|
||||
|
||||
# =============================================================================
|
||||
# CRIAR ARGOCD APPLICATION
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
log_info "=== Criando ArgoCD Application ==="
|
||||
|
||||
# Construir anotações de Ingress
|
||||
INGRESS_ANNOTATIONS=""
|
||||
if [[ "$USE_LETSENCRYPT" == "true" ]]; then
|
||||
INGRESS_ANNOTATIONS='cert-manager.io/cluster-issuer: letsencrypt-prod'
|
||||
fi
|
||||
|
||||
# Aplicar ArgoCD Application
|
||||
kubectl apply -f - << EOF
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: monitoring
|
||||
namespace: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://${GITEA_HOST}/factory/monitoring.git
|
||||
targetRevision: HEAD
|
||||
path: apps/victoria-metrics
|
||||
helm:
|
||||
valueFiles:
|
||||
- values.yaml
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: monitoring
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- ServerSideApply=true
|
||||
EOF
|
||||
|
||||
log_success "ArgoCD Application criada"
|
||||
|
||||
# =============================================================================
|
||||
# AGUARDAR SINCRONIZAÇÃO
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
log_info "=== Aguardando Sincronização ==="
|
||||
|
||||
log_info "ArgoCD está sincronizando Victoria Metrics stack..."
|
||||
log_info "Isso pode levar alguns minutos na primeira vez..."
|
||||
|
||||
# Aguardar até 5 minutos
|
||||
for i in {1..60}; do
|
||||
STATUS=$(kubectl get application monitoring -n argocd -o jsonpath='{.status.sync.status}' 2>/dev/null || echo "Unknown")
|
||||
HEALTH=$(kubectl get application monitoring -n argocd -o jsonpath='{.status.health.status}' 2>/dev/null || echo "Unknown")
|
||||
|
||||
echo -ne "\r Status: ${STATUS} | Health: ${HEALTH} "
|
||||
|
||||
if [[ "$STATUS" == "Synced" && "$HEALTH" == "Healthy" ]]; then
|
||||
echo ""
|
||||
log_success "Victoria Metrics stack sincronizado e saudável!"
|
||||
break
|
||||
fi
|
||||
|
||||
if [[ $i -eq 60 ]]; then
|
||||
echo ""
|
||||
log_warn "Timeout aguardando sincronização"
|
||||
log_info "Verifique o status no ArgoCD UI"
|
||||
fi
|
||||
|
||||
sleep 5
|
||||
done
|
||||
|
||||
# =============================================================================
|
||||
# OBTER SENHA DO GRAFANA
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
log_info "=== Credenciais do Grafana ==="
|
||||
log_info "Obtendo credenciais do Grafana..."
|
||||
|
||||
# Aguardar secret ser criado
|
||||
GRAFANA_PASSWORD=""
|
||||
for i in {1..30}; do
|
||||
if kubectl get secret vm-grafana -n monitoring &> /dev/null; then
|
||||
break
|
||||
fi
|
||||
GRAFANA_PASSWORD=$(kubectl get secret -n monitoring -l app.kubernetes.io/name=grafana \
|
||||
-o jsonpath='{.items[0].data.admin-password}' 2>/dev/null | base64 -d 2>/dev/null)
|
||||
if [[ -n "$GRAFANA_PASSWORD" ]]; then break; fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
GRAFANA_PASSWORD=$(kubectl get secret vm-grafana -n monitoring -o jsonpath='{.data.admin-password}' 2>/dev/null | base64 -d 2>/dev/null || echo "")
|
||||
# =============================================================================
|
||||
# RESUMO FINAL
|
||||
# =============================================================================
|
||||
|
||||
if [[ -z "$GRAFANA_PASSWORD" ]]; then
|
||||
# Tentar nome alternativo do secret
|
||||
GRAFANA_PASSWORD=$(kubectl get secret -n monitoring -l app.kubernetes.io/name=grafana -o jsonpath='{.items[0].data.admin-password}' 2>/dev/null | base64 -d 2>/dev/null || echo "admin")
|
||||
PROTOCOL="https"
|
||||
if [[ "$USE_CLOUDFLARE" == "false" && "$USE_LETSENCRYPT" == "false" ]]; then
|
||||
PROTOCOL="http"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# INSTRUÇÕES FINAIS
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Instalação Concluída!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Victoria Metrics Stack instalado via GitOps"
|
||||
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
|
||||
echo -e "${GREEN} Victoria Metrics Instalado!${NC}"
|
||||
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
echo "Grafana:"
|
||||
if [[ "$USE_CLOUDFLARE" == "true" || "$USE_LETSENCRYPT" == "true" ]]; then
|
||||
echo " URL: https://${GRAFANA_HOST}"
|
||||
else
|
||||
echo " URL: http://${GRAFANA_HOST}"
|
||||
fi
|
||||
echo " URL: ${PROTOCOL}://${GRAFANA_HOST}"
|
||||
echo " Username: admin"
|
||||
echo " Password: ${GRAFANA_PASSWORD:-'(ver secret vm-grafana)'}"
|
||||
echo " Password: ${GRAFANA_PASSWORD:-'(kubectl get secret -n monitoring -l app.kubernetes.io/name=grafana -o jsonpath=\"{.items[0].data.admin-password}\" | base64 -d)'}"
|
||||
echo ""
|
||||
echo "Acesso via port-forward:"
|
||||
echo " kubectl port-forward -n monitoring svc/vm-grafana 3000:80"
|
||||
echo "Acesso alternativo (port-forward):"
|
||||
echo " kubectl port-forward -n monitoring svc/monitoring-grafana 3000:80"
|
||||
echo " open http://localhost:3000"
|
||||
echo ""
|
||||
echo "ArgoCD Application:"
|
||||
echo " kubectl get application monitoring -n argocd"
|
||||
echo ""
|
||||
echo "Pods:"
|
||||
echo "Verificar:"
|
||||
echo " kubectl get pods -n monitoring"
|
||||
echo ""
|
||||
echo "GitOps Repository:"
|
||||
echo " https://${GITEA_HOST}/factory/monitoring"
|
||||
echo "Desinstalar:"
|
||||
echo " ./cleanup.sh"
|
||||
echo ""
|
||||
echo "Verificar métricas:"
|
||||
echo " kubectl port-forward -n monitoring svc/vmsingle-vm 8429:8429"
|
||||
echo " curl http://localhost:8429/api/v1/query?query=up"
|
||||
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
|
||||
log_info "Status dos pods:"
|
||||
kubectl get pods -n monitoring
|
||||
|
||||
Reference in New Issue
Block a user