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:
140
aula-09/base-n8n-values.yaml
Normal file
140
aula-09/base-n8n-values.yaml
Normal file
@@ -0,0 +1,140 @@
|
||||
# =============================================================================
|
||||
# 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
|
||||
Reference in New Issue
Block a user