refactor: migrar GitLab → Gitea (aulas 10, 11, 13)
- Aula 10: Gitea + Registry + Actions + Runner (substituiu GitLab) - gitea-values.yaml: PostgreSQL standalone, Valkey standalone, ~800Mi RAM - setup.sh/cleanup.sh: namespace gitea, Helm gitea-charts/gitea + actions - README.md: documentação completa com de→para (GitLab/Harbor/Tekton vs Gitea) - Aula 11: ArgoCD (GitOps) — removido GitLab Runner (runner vive na aula-10) - setup.sh: só ArgoCD, integração SSH com Gitea - node-bugado/.gitea/workflows/ci.yml: pipeline convertida - Aula 13: Container Factory — atualizado para Gitea - setup.sh/cleanup.sh: referências GitLab → Gitea - pipelines/postgresql/ci.yml: Gitea Actions workflow - README.md: conexão com act_runner explicada - CLAUDE.md: tabela de aulas atualizada
This commit is contained in:
234
aula-13/setup.sh
Executable file
234
aula-13/setup.sh
Executable file
@@ -0,0 +1,234 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# Aula 13 - Container Factory (eStargz Images)
|
||||
# =============================================================================
|
||||
#
|
||||
# Este script configura:
|
||||
# 1. Namespace para deploy de imagens customizadas
|
||||
# 2. Secrets e ConfigMaps
|
||||
# 3. Instruções para criar repositório no Gitea
|
||||
#
|
||||
# Pré-requisitos:
|
||||
# - Cluster Kubernetes com Talos + stargz-snapshotter (aula-07/08)
|
||||
# - Gitea instalado (aula-10)
|
||||
# - Gitea Actions Runner (aula-10)
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
# Cores para output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
CYAN='\033[0;36m'
|
||||
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}[ERROR]${NC} $1"; }
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ENV_FILE="${SCRIPT_DIR}/.env"
|
||||
|
||||
# =============================================================================
|
||||
# VERIFICAR PRÉ-REQUISITOS
|
||||
# =============================================================================
|
||||
|
||||
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"
|
||||
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 Gitea está instalado
|
||||
if ! kubectl get namespace gitea &> /dev/null; then
|
||||
log_error "Namespace 'gitea' não encontrado"
|
||||
log_info "Execute primeiro a aula-10 para instalar o Gitea"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_success "Pré-requisitos verificados"
|
||||
|
||||
# =============================================================================
|
||||
# CARREGAR CONFIGURAÇÃO EXISTENTE
|
||||
# =============================================================================
|
||||
|
||||
# Carregar configuração local PRIMEIRO (se existir)
|
||||
if [[ -f "$ENV_FILE" ]]; then
|
||||
log_info "Carregando configuração local..."
|
||||
source "$ENV_FILE"
|
||||
fi
|
||||
|
||||
# Se não tiver configuração local, tentar herdar da aula-10
|
||||
if [[ -z "$DOMAIN" ]]; then
|
||||
AULA10_ENV="${SCRIPT_DIR}/../aula-10/.env"
|
||||
if [[ -f "$AULA10_ENV" ]]; then
|
||||
log_info "Herdando configuração da aula-10..."
|
||||
source "$AULA10_ENV"
|
||||
fi
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# COLETAR CONFIGURAÇÃO
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Container Factory - eStargz Images"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# Domínio
|
||||
if [[ -z "$DOMAIN" ]]; then
|
||||
read -p "Domínio base (ex: kube.quest): " DOMAIN
|
||||
fi
|
||||
log_info "Domínio: ${DOMAIN}"
|
||||
|
||||
GITEA_HOST="gitea.${DOMAIN}"
|
||||
|
||||
# Namespace para deploy
|
||||
if [[ -z "$DEPLOY_NAMESPACE" ]]; then
|
||||
DEFAULT_NS="factory"
|
||||
read -p "Namespace para deploy [${DEFAULT_NS}]: " DEPLOY_NAMESPACE
|
||||
DEPLOY_NAMESPACE="${DEPLOY_NAMESPACE:-$DEFAULT_NS}"
|
||||
fi
|
||||
log_info "Namespace: ${DEPLOY_NAMESPACE}"
|
||||
|
||||
# Gerar senha PostgreSQL se não existir
|
||||
if [[ -z "$POSTGRES_PASSWORD" ]]; then
|
||||
POSTGRES_PASSWORD=$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 24)
|
||||
log_info "Senha PostgreSQL gerada automaticamente"
|
||||
fi
|
||||
|
||||
# Salvar configuração
|
||||
cat > "$ENV_FILE" << EOF
|
||||
# Configuração gerada pelo setup.sh - $(date)
|
||||
DOMAIN=${DOMAIN}
|
||||
GITEA_HOST=${GITEA_HOST}
|
||||
DEPLOY_NAMESPACE=${DEPLOY_NAMESPACE}
|
||||
POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
EOF
|
||||
|
||||
log_success "Configuração salva em ${ENV_FILE}"
|
||||
|
||||
# =============================================================================
|
||||
# CRIAR NAMESPACE
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
log_info "=== Criando Namespace ==="
|
||||
|
||||
kubectl create namespace ${DEPLOY_NAMESPACE} --dry-run=client -o yaml | kubectl apply -f -
|
||||
log_success "Namespace ${DEPLOY_NAMESPACE} criado"
|
||||
|
||||
# =============================================================================
|
||||
# CRIAR SECRET DO POSTGRESQL
|
||||
# =============================================================================
|
||||
|
||||
log_info "Criando secret do PostgreSQL..."
|
||||
kubectl create secret generic postgresql-secret \
|
||||
--namespace ${DEPLOY_NAMESPACE} \
|
||||
--from-literal=username=postgres \
|
||||
--from-literal=password="${POSTGRES_PASSWORD}" \
|
||||
--dry-run=client -o yaml | kubectl apply -f -
|
||||
log_success "Secret postgresql-secret criado"
|
||||
|
||||
# =============================================================================
|
||||
# CRIAR CONFIGMAP
|
||||
# =============================================================================
|
||||
|
||||
log_info "Criando ConfigMap do PostgreSQL..."
|
||||
kubectl apply -f "${SCRIPT_DIR}/k8s/postgresql/configmap.yaml" -n ${DEPLOY_NAMESPACE}
|
||||
log_success "ConfigMap postgresql-config criado"
|
||||
|
||||
# =============================================================================
|
||||
# INSTRUÇÕES PARA CRIAR REPOSITÓRIO
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Próximos Passos"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo -e "${CYAN}1. Criar organização 'factory' no Gitea:${NC}"
|
||||
echo " URL: https://${GITEA_HOST}/-/admin/orgs"
|
||||
echo " Nome: factory"
|
||||
echo " Visibilidade: Private"
|
||||
echo ""
|
||||
echo -e "${CYAN}2. Criar repositório 'postgresql' na org:${NC}"
|
||||
echo " URL: https://${GITEA_HOST}/repo/create"
|
||||
echo " Owner: factory"
|
||||
echo " Nome: postgresql"
|
||||
echo ""
|
||||
echo -e "${CYAN}3. Clonar e copiar os arquivos:${NC}"
|
||||
echo ""
|
||||
echo " git clone git@${GITEA_HOST}:factory/postgresql.git"
|
||||
echo " cd postgresql"
|
||||
echo " cp ${SCRIPT_DIR}/images/postgresql/* ."
|
||||
echo " mkdir -p .gitea/workflows"
|
||||
echo " cp ${SCRIPT_DIR}/pipelines/postgresql/ci.yml .gitea/workflows/ci.yml"
|
||||
echo ""
|
||||
echo -e "${CYAN}4. Push inicial:${NC}"
|
||||
echo ""
|
||||
echo " git add ."
|
||||
echo " git commit -m 'Initial commit: PostgreSQL factory image'"
|
||||
echo " git push -u origin main"
|
||||
echo ""
|
||||
echo -e "${CYAN}5. Aguardar pipeline (Gitea Actions):${NC}"
|
||||
echo " https://${GITEA_HOST}/factory/postgresql/actions"
|
||||
echo ""
|
||||
echo -e "${CYAN}6. Após pipeline completo, deploy no cluster:${NC}"
|
||||
echo ""
|
||||
echo " kubectl apply -f ${SCRIPT_DIR}/k8s/postgresql/pvc.yaml -n ${DEPLOY_NAMESPACE}"
|
||||
echo " kubectl apply -f ${SCRIPT_DIR}/k8s/postgresql/deployment.yaml -n ${DEPLOY_NAMESPACE}"
|
||||
echo " kubectl apply -f ${SCRIPT_DIR}/k8s/postgresql/service.yaml -n ${DEPLOY_NAMESPACE}"
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Credenciais PostgreSQL"
|
||||
echo "=========================================="
|
||||
echo " Host: postgresql.${DEPLOY_NAMESPACE}.svc.cluster.local"
|
||||
echo " Port: 5432"
|
||||
echo " User: postgres"
|
||||
echo " Pass: ${POSTGRES_PASSWORD}"
|
||||
echo " DB: app"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo -e "${CYAN}7. Testar conexão:${NC}"
|
||||
echo ""
|
||||
echo " kubectl run pg-client --rm -it --restart=Never \\"
|
||||
echo " --image=postgres:17-alpine \\"
|
||||
echo " --env=PGPASSWORD=${POSTGRES_PASSWORD} \\"
|
||||
echo " -- psql -h postgresql.${DEPLOY_NAMESPACE}.svc.cluster.local -U postgres -d app"
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Container Registry (Gitea Packages)"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo " # Login"
|
||||
echo " docker login ${GITEA_HOST}"
|
||||
echo ""
|
||||
echo " # Imagens são publicadas automaticamente pelo Gitea Actions"
|
||||
echo " # Após pipeline: ${GITEA_HOST}/factory/postgresql/packages"
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Verificar Lazy Pulling (eStargz)"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo " # Ver tempo de startup do pod"
|
||||
echo " kubectl get pods -n ${DEPLOY_NAMESPACE} -w"
|
||||
echo ""
|
||||
echo " # Ver logs do stargz-snapshotter (se tiver acesso ao node)"
|
||||
echo " talosctl -n <node-ip> logs stargz-snapshotter"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user