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
This commit is contained in:
Allyson de Paula
2025-12-31 17:57:02 -03:00
parent 50dc74c1d8
commit 07b7ee62d3
35 changed files with 4665 additions and 311 deletions

View File

@@ -0,0 +1,88 @@
# =============================================================================
# NGINX Ingress Controller - Configuração para Hetzner Cloud
# =============================================================================
#
# Este values configura o NGINX Ingress com:
# - LoadBalancer da Hetzner (provisionado automaticamente pelo CCM)
# - Suporte a TCP para SSH do GitLab (porta 22)
# - Uso de rede privada para comunicação com os nodes
#
# Uso:
# helm upgrade --install nginx-ingress ingress-nginx/ingress-nginx \
# -n ingress-nginx --create-namespace \
# -f nginx-ingress-values.yaml
#
# =============================================================================
controller:
# Configuração do Service LoadBalancer
service:
type: LoadBalancer
# Annotations específicas para Hetzner Cloud
annotations:
# Nome do LoadBalancer no painel Hetzner
load-balancer.hetzner.cloud/name: "k8s-ingress"
# Localização do LoadBalancer (mesmo datacenter do cluster)
load-balancer.hetzner.cloud/location: "nbg1"
# Usar rede privada para comunicação com nodes
# Mais seguro e sem custo de tráfego
load-balancer.hetzner.cloud/use-private-ip: "true"
# Tipo do LoadBalancer (lb11 é o menor/mais barato)
load-balancer.hetzner.cloud/type: "lb11"
# Health check
load-balancer.hetzner.cloud/health-check-interval: "5s"
load-balancer.hetzner.cloud/health-check-timeout: "3s"
load-balancer.hetzner.cloud/health-check-retries: "3"
# ==========================================================================
# TCP Services - Para SSH do GitLab
# ==========================================================================
# Mapeia porta externa -> namespace/service:porta
# O GitLab Shell roda no namespace gitlab, service gitlab-gitlab-shell
tcp:
22: "gitlab/gitlab-gitlab-shell:22"
# Configuração do controller
config:
# Habilitar proxy protocol se necessário
# use-proxy-protocol: "true"
# Timeouts
proxy-connect-timeout: "10"
proxy-read-timeout: "120"
proxy-send-timeout: "120"
# Body size para uploads grandes (GitLab, n8n)
proxy-body-size: "0"
# Keepalive
keep-alive: "75"
keep-alive-requests: "1000"
# Recursos do controller
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
# Métricas para monitoramento
metrics:
enabled: true
serviceMonitor:
enabled: false # Habilitar se usar Prometheus Operator
# Admission webhook
admissionWebhooks:
enabled: true
# Default backend (opcional)
defaultBackend:
enabled: false