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
89 lines
2.6 KiB
YAML
89 lines
2.6 KiB
YAML
# =============================================================================
|
|
# 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
|