Commit Graph

42 Commits

Author SHA1 Message Date
ArgoCD Setup
7222d8971e fix(aula-10): configurar bucket único para todos os tipos de objeto GitLab
Adiciona configuração explícita para usar o mesmo bucket S3 para uploads,
artifacts, LFS, packages, externalDiffs, terraformState, ciSecureFiles e
dependencyProxy. O GitLab organiza internamente por pastas/prefixos.
2026-01-24 08:05:25 -03:00
ArgoCD Setup
3860809e5c feat(aula-14): adicionar Istio Traffic Splitting com canary deployment
- Instala Istio (base + istiod + ingressgateway)
- Configura Kiali e Jaeger para observabilidade
- Deploy de app-backend v1 e v2 com traffic splitting 90/10
- Integra com Victoria Metrics da aula-12
- Inclui teste-stress.sh para validar distribuição de tráfego
- Tráfego externo passa pelo Istio Gateway via NGINX Ingress
2026-01-24 07:40:51 -03:00
ArgoCD Setup
3e53328214 fix(aula-10,11): aumentar recursos GitLab e melhorar instruções DNS
aula-10:
- Aumentar memory requests para forçar nodes dedicados via autoscaler
- webservice: 2Gi → 2.5Gi, sidekiq: 1.5Gi → 2Gi
- gitaly/postgresql: 512Mi → 1Gi, redis: 256Mi → 512Mi
- Total: ~5GB → ~7.5GB para separar GitLab do ArgoCD

aula-11:
- Adicionar instruções DNS detalhadas (CloudFlare e Let's Encrypt)
- Adicionar pausa interativa para aguardar propagação DNS
- Evita esgotar retries do Let's Encrypt antes do DNS propagar
2026-01-24 03:00:03 -03:00
ArgoCD Setup
35523a1c1b fix(aula-10): corrigir certificados e ingress do GitLab
- Mesclar seções global duplicadas no gitlab-values.yaml
  (a segunda sobrescrevia ingress.class: nginx, causando 404)
- Adicionar etapa de DNS antes da instalação no setup.sh
  (HTTP-01 challenge requer DNS configurado previamente)
2026-01-24 00:23:09 -03:00
ArgoCD Setup
4ef121ba96 fix(aula-10): evitar encerramento prematuro do setup.sh
load_config retorna 1 quando .env não existe, causando saída
imediata devido ao set -e. Adiciona || true para continuar
a execução e coletar input do usuário.
2026-01-23 23:43:31 -03:00
ArgoCD Setup
12f6f48c64 feat(aula-10): migrar para Hetzner Object Storage + melhorias
Mudanças principais:
- Substituir MinIO bundled por Hetzner Object Storage (S3)
- Secrets YAML com envsubst para credenciais S3
- Anti-affinity preferencial (adapta a qualquer topologia)
- Detecção automática de cert-manager existente
- Menu TLS simplificado (Let's Encrypt/CloudFlare/HTTP)
- Perguntar hostname do registry separadamente
- Exibição unificada de TLS (não mais CloudFlare: true/false)
2026-01-23 22:52:43 -03:00
ArgoCD Setup
420fce0eb9 docs(aula-09): adicionar exemplo de upgrade de versão com image.tag 2026-01-23 20:55:03 -03:00
ArgoCD Setup
70beced08f fix(aula-09): escapar colchetes no comando helm upgrade para zsh 2026-01-23 20:40:22 -03:00
ArgoCD Setup
a219dac7f6 docs(aula-09): expandir seção de gerenciamento Helm
Adiciona comandos didáticos:
- helm list, history, get values, status
- helm rollback (não precisa de variáveis)
- helm upgrade com source .env (mostra os --set)
- Dica para usar setup.sh em produção
2026-01-23 20:29:01 -03:00
ArgoCD Setup
0587f176f3 fix(aula-09): corrigir comando de upgrade para usar repo Helm tradicional
URL OCI (oci://ghcr.io/...) requer autenticação e retorna erro 403.
Alterado para usar o mesmo método do setup.sh (helm repo add).
2026-01-23 20:18:05 -03:00
ArgoCD Setup
c44023efde docs(aula-09): adicionar seção de upgrade via Helm
Documenta como atualizar o n8n após modificar o values file,
incluindo flags --atomic e --timeout para rollback seguro.
2026-01-23 20:11:36 -03:00
ArgoCD Setup
2480c82944 fix(aula-08): prevenir volume stalling com CSI tolerations e PDB
- Adicionar hcloud-csi-values.yaml com tolerations para node failures
- Configurar 2 replicas do CSI controller para HA
- Criar statefulset-pdb.yaml para proteger StatefulSets durante drain
- Documentar troubleshooting de volumes stuck no README
2026-01-23 18:45:24 -03:00
Allyson de Paula
9f96e97205 Atualizando o Talos pra 1.12.2 2026-01-23 18:05:11 -03:00
ArgoCD Setup
0267d93cf6 fix(aula-06): aumentar recursos do webhook para evitar CrashLoopBackOff
O n8n webhook precisa de mais memória para iniciar corretamente.
Com 256Mi, a liveness probe mata o container antes dele subir.

- Aumentar memory limit de 256Mi para 512Mi
- Aumentar cpu limit de 250m para 500m
- Aumentar requests proporcionalmente
2026-01-23 14:39:43 -03:00
ArgoCD Setup
d3656fdce9 docs(aula-05): atualizar README com nova lógica de scaling
- Documentar trigger único (unavailable) em vez de restarts
- Explicar fórmula intuitiva: 5 + (unavailable * 2)
- Adicionar seção sobre scrape interval de 5s
- Documentar fluxo de detecção (~6-7s)
- Explicar por que não usar restarts (CrashLoopBackOff)
- Atualizar lições e trade-offs
2026-01-23 11:15:20 -03:00
ArgoCD Setup
e15138a734 fix(aula-05): otimizar KEDA para detecção instantânea de crashes
- Simplificar ScaledObject: usar apenas trigger de pods unavailable
  (instantâneo) em vez de restarts (requeria janela de tempo)
- Adicionar VMServiceScrape com scrape interval de 5s para detecção
  rápida pelo Victoria Metrics (default era 30s)
- Acelerar scale down: stabilizationWindow=0, remove 10 pods/s
- Query intuitiva: 5 + (unavailable * 2) = réplicas desejadas
- Usar metricType AverageValue para cálculo correto de réplicas
- Limpar mensagem desnecessária do teste de stress
2026-01-23 11:07:33 -03:00
ArgoCD Setup
3facd5cbae fix(aula-04): forçar teste de stress via Ingress porta 80
- URL padrão agora é http://localhost (porta 80)
- Verificação do Ingress executa sempre, não apenas quando porta 80
- Remove opção de fallback para porta 3000
- Atualiza README com exemplos corretos
2026-01-23 09:13:14 -03:00
ArgoCD Setup
1b520c7be7 fix(aula-04): corrigir porta do teste de stress para 3000
URL default estava sem porta, causando conexão na porta 80 ao invés da 3000.
2026-01-23 08:31:53 -03:00
Allyson de Paula
67e8c54810 Edit README.md 2026-01-12 06:54:36 -03:00
Allyson de Paula
ed8e68707c Edit README.md 2026-01-12 06:53:43 -03:00
Allyson de Paula
3b19f8a95d Edit README.md 2026-01-11 21:21:49 -03:00
Allyson de Paula
af65e3471e LICENSE 2026-01-11 21:13:47 -03:00
ArgoCD Setup
97b4b50c96 refactor: Atualizar CLAUDE.md e melhorias aula-11
- CLAUDE.md: Atualizar tabela com aulas 12 (Victoria Metrics) e 13 (Container Factory)
- aula-11: Melhorias no setup do GitLab Runner
2026-01-08 18:30:08 -03:00
ArgoCD Setup
5f6f99843a docs(aula-12): Atualizar documentação pvc-autoresizer com modo automático
- Adicionar flag --no-annotation-check para auto-resize sem annotations
- Documentar comportamento automático para PVCs futuros
- Mover seção de annotations para "Override (Opcional)"
- Atualizar limite padrão para 10Ti (máximo Hetzner)
2026-01-08 18:26:31 -03:00
ArgoCD Setup
db18f16f02 aula-12: Documentar arquitetura do auto-resize de PVC
Adiciona diagrama detalhado mostrando:
- Fluxo de métricas (kubelet → vmagent → vmsingle)
- Fluxo de resize (pvc-autoresizer → PVC → Hetzner CSI)
- Tabela de componentes e responsabilidades
2026-01-08 17:48:46 -03:00
ArgoCD Setup
4b92838ac3 aula-12: Victoria Metrics + Grafana via GitOps
Stack completo de observabilidade:
- Victoria Metrics (vmsingle, vmagent, vmalert)
- Grafana com dashboards built-in
- Alertas customizados (PVC, pods, nodes, deployments)
- pvc-autoresizer para expansão automática de volumes
- Queries PromQL documentadas

Instalação via ArgoCD seguindo padrão GitOps da aula-11.
2026-01-08 17:11:28 -03:00
Allyson de Paula
e75b245c3b docs: Adicionar README.md e simplificar CLAUDE.md
- README.md com visão completa do workshop (jornada, arquitetura, custos)
- CLAUDE.md simplificado para instruções concisas ao Claude Code
2025-12-31 21:58:43 -03:00
Allyson de Paula
a52a1b5745 aula-07: README.md com tutorial completo de imagem Talos para Hetzner 2025-12-31 21:43:09 -03:00
Allyson de Paula
83775685ec aula-05: Adicionar mais opções de ambiente local no README 2025-12-31 21:37:26 -03:00
Allyson de Paula
e9b8858105 aula-05: README.md com documentação do KEDA + Victoria Metrics 2025-12-31 21:27:46 -03:00
Allyson de Paula
1f6d6965de aula-04: README.md com documentação do Keep Request (Lua) 2025-12-31 21:23:42 -03:00
Allyson de Paula
8e743f6e69 aula-11: ArgoCD + GitLab Runner para GitOps CI/CD
- ArgoCD via Helm com recursos mínimos (~1Gi)
- GitLab Runner com executor Kubernetes
- Exemplo node-bugado com Dockerfile e .gitlab-ci.yml
- Manifests K8s para repositório GitOps
- README.md da aula-03 (liveness + readiness probes)
2025-12-31 21:19:40 -03:00
Allyson de Paula
07b7ee62d3 Workshop completo: aulas 08-10 com Talos, n8n e GitLab na Hetzner
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
2025-12-31 17:57:02 -03:00
Allyson de Paula
50dc74c1d8 aula-06 e aula-08: Hetzner CSI Driver e segurança de rede
aula-06:
- Adicionar instalação do Hetzner CSI Driver no setup.sh
- Input interativo seguro para token da Hetzner Cloud
- Atualizar custom-values.yaml para n8n.kube.quest

aula-08:
- Adicionar regras de firewall para VXLAN e rede privada
- Configurar Flannel para usar interface privada (--iface-can-reach)
- Configurar kubelet.nodeIP.validSubnets para rede privada
- Corrigir segurança: VXLAN restrito a 10.0.0.0/8
2025-12-27 22:56:09 -03:00
Allyson de Paula
6db8ca3189 aula-04: Adicionar setup.sh para NGINX Ingress com Lua snippets
Automatiza a instalação do NGINX Ingress Controller com configuração
necessária para suportar server-snippet com Lua (Keep Request pattern).
2025-12-27 12:23:01 -03:00
Allyson de Paula
aa2bcfce46 aula-07 e aula-08: Cluster Talos HA na Hetzner com Autoscaler
aula-07: Criação de imagem Talos customizada na Hetzner Cloud
- Usa Talos Factory para gerar imagem ARM64/AMD64
- Inclui extensões: qemu-guest-agent, hcloud

aula-08: Provisionamento de cluster Kubernetes Talos via OpenTofu
- 3 Control Planes em HA (CAX11 ARM64)
- 1 Worker Node (CAX11 ARM64)
- Rede privada, Floating IP, Firewall
- Cluster Autoscaler para Hetzner (0-5 workers extras)
- Setup interativo com validação de pré-requisitos
- Custo estimado: ~€18/mês (base)

Também inclui:
- .gitignore para ignorar arquivos sensíveis
- CLAUDE.md com instruções do projeto
2025-12-27 07:12:58 -03:00
Allyson de Paula
7efb774be8 aula-06: Deploy n8n via Helm com Queue Mode 2025-12-26 22:03:12 -03:00
Allyson de Paula
ed60410cb9 aula-05: KEDA + Victoria Metrics para auto-scaling
- Auto-scaling baseado em pods indisponíveis e restarts
- Victoria Metrics para coleta de métricas
- NGINX Ingress com retry automático (5 tentativas)
- Configuração ultra-agressiva: +5 pods/segundo
- Script setup.sh para instalação completa
- Mínimo 5 pods, máximo 30 pods
2025-12-25 17:19:11 -03:00
Allyson de Paula
9e834de48d aula-04: NGINX Ingress com Keep Request (Lua)
Quando todos os pods estão indisponíveis, o Ingress mantém
a requisição por até 99s aguardando o backend voltar,
alcançando zero falhas visíveis ao usuário.
2025-12-25 13:38:46 -03:00
Allyson de Paula
a479bf3696 aula-03: Alta disponibilidade com replicas e readiness probe
Múltiplas réplicas com readiness probe para remover pods
não-saudáveis do Service enquanto liveness probe os reinicia.
2025-12-25 13:37:33 -03:00
Allyson de Paula
b9ab2d281f aula-02: Kubernetes com liveness probe
Deployment com liveness probe para detectar quando a app
trava e reiniciar o container automaticamente.
2025-12-25 13:32:29 -03:00
Allyson de Paula
1ea1a98e60 aula-01: Docker Compose com restart policy
App Node.js que trava após MAX_REQUESTS para demonstrar
como o Docker Compose lida com containers que falham.
2025-12-25 13:31:02 -03:00