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
141 lines
3.8 KiB
YAML
141 lines
3.8 KiB
YAML
# =============================================================================
|
|
# Base Values para n8n de Clientes
|
|
# =============================================================================
|
|
#
|
|
# Este arquivo contém configurações base para instalações de n8n por cliente.
|
|
# O script add-client.sh usa este arquivo como template.
|
|
#
|
|
# Personalizações por cliente são feitas via --set no helm install.
|
|
#
|
|
# =============================================================================
|
|
|
|
# Imagem
|
|
image:
|
|
repository: n8nio/n8n
|
|
tag: "2.0.3"
|
|
pullPolicy: IfNotPresent
|
|
|
|
# Chave de criptografia (será sobrescrita por cliente se necessário)
|
|
# IMPORTANTE: Em produção, use uma chave única por cliente
|
|
encryptionKey: "workshop-n8n-encryption-key-32ch"
|
|
|
|
# =============================================================================
|
|
# BANCO DE DADOS
|
|
# =============================================================================
|
|
|
|
db:
|
|
type: postgresdb
|
|
|
|
postgresql:
|
|
enabled: true
|
|
auth:
|
|
database: n8n
|
|
username: n8n
|
|
# Em produção, use secrets únicos por cliente
|
|
password: "n8n-postgres-workshop-2025"
|
|
primary:
|
|
persistence:
|
|
enabled: true
|
|
size: 10Gi # Mínimo Hetzner ($0.0484/GB)
|
|
storageClass: hcloud-volumes
|
|
|
|
# =============================================================================
|
|
# REDIS
|
|
# =============================================================================
|
|
|
|
redis:
|
|
enabled: true
|
|
architecture: standalone
|
|
auth:
|
|
enabled: true
|
|
password: "n8n-redis-workshop-2025"
|
|
master:
|
|
persistence:
|
|
enabled: true
|
|
size: 10Gi # Mínimo Hetzner ($0.0484/GB)
|
|
storageClass: hcloud-volumes
|
|
|
|
# =============================================================================
|
|
# INGRESS
|
|
# =============================================================================
|
|
# Host é configurado dinamicamente pelo add-client.sh
|
|
|
|
ingress:
|
|
enabled: true
|
|
className: nginx
|
|
annotations:
|
|
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
|
|
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
|
|
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
|
|
|
|
# =============================================================================
|
|
# MAIN NODE
|
|
# =============================================================================
|
|
# N8N_SECURE_COOKIE é configurado dinamicamente pelo add-client.sh via --set
|
|
|
|
main:
|
|
persistence:
|
|
enabled: true
|
|
size: 10Gi # Mínimo Hetzner ($0.0484/GB)
|
|
storageClass: hcloud-volumes
|
|
mountPath: "/home/node/.n8n"
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 512Mi
|
|
|
|
# =============================================================================
|
|
# WORKERS (Queue Mode)
|
|
# =============================================================================
|
|
|
|
worker:
|
|
mode: queue
|
|
count: 1
|
|
concurrency: 10
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 512Mi
|
|
autoscaling:
|
|
enabled: true
|
|
minReplicas: 1
|
|
maxReplicas: 3
|
|
metrics:
|
|
- type: Resource
|
|
resource:
|
|
name: cpu
|
|
target:
|
|
type: Utilization
|
|
averageUtilization: 70
|
|
|
|
# =============================================================================
|
|
# WEBHOOKS
|
|
# =============================================================================
|
|
|
|
webhook:
|
|
mode: queue
|
|
count: 1
|
|
resources:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 128Mi
|
|
limits:
|
|
cpu: 250m
|
|
memory: 256Mi
|
|
autoscaling:
|
|
enabled: false # Manter simples para clientes menores
|
|
|
|
# =============================================================================
|
|
# SEGURANÇA
|
|
# =============================================================================
|
|
|
|
securityContext:
|
|
runAsNonRoot: true
|
|
runAsUser: 1000
|