Guias
Implantar no Kubernetes
Implantação HA em produção com o Helm chart incluído.
Para equipes que precisam de HA, multi-região, ou que não se sentem confortáveis com um único host. Fornecemos um Helm chart completo em deploy/helm/singlink/.
Arquitetura
Ingress (nginx / Cloudflare)
│
┌──────────┼──────────┐
│ │ │
web (×N) ws (×N) worker (×N)
│ │ │
└────┬─────┴────┬─────┘
│ │
Postgres Redis S3
(managed) (managed) (managed)Instalação
helm install singlink ./deploy/helm/singlink \
--namespace singlink --create-namespace \
--set domain.app=chat.acme.com \
--set secret.authSecret="$(openssl rand -base64 32)" \
--set secret.postgresPassword="$(openssl rand -base64 24)" \
--set secret.redisPassword="$(openssl rand -base64 24)" \
--set s3.endpoint="https://s3.us-east-1.amazonaws.com" \
--set s3.bucket="acme-singlink" \
--set s3.accessKey="AKIA..." \
--set s3.secretKey="..."O que é criado
- 3 Deployments:
web,ws,worker - 2 Services (web HTTP, ws sticky-session)
- 1 Ingress com regra de upgrade de WS
- StatefulSets postgres + redis embarcados opcionais
- Job pós-instalação que executa
prisma migrate deploy - ConfigMap + Secret para configuração e credenciais
Checklist de produção
- Desative os bancos de dados embarcados e aponte para RDS / ElastiCache gerenciados:
--set embedded.postgres.enabled=false --set externalDatabaseUrl=... - Ative o autoscaling:
--set autoscaling.enabled=true --set autoscaling.maxReplicas=20 - TLS no ingress: instale o cert-manager e defina
ingress.tls.secretName="singlink-tls" - A sticky session para WS já está configurada no nível do Service (
sessionAffinity: ClientIP) —— nenhuma anotação extra de ingress é necessária - Gerenciamento de segredos: use Sealed Secrets ou External Secrets em vez de passar valores pela CLI
- S3: AWS S3, R2, GCS, ou um MinIO gerenciado. O chart não inclui o MinIO —— executar armazenamento de objetos com estado no K8s não é divertido
Escalonamento
# Manual scale
kubectl -n singlink scale deploy singlink-web --replicas=5
kubectl -n singlink scale deploy singlink-worker --replicas=10
# With autoscaling.enabled=true, HPAs do this automatically based on CPU.Atualizações
helm upgrade singlink ./deploy/helm/singlink -n singlink \
--set image.tag=v0.2.0 \
--reuse-values
# Helm hook runs the migrate Job post-upgrade automatically.Observabilidade
O healthcheck do Next.js está em /api/healthz (já conectado às sondas de readiness/liveness). Para métricas, aponte o Prometheus para o sidecar padrão de sua escolha. Para tracing, defina OTEL_EXPORTER_OTLP_ENDPOINT no ConfigMap.
Enterprise
Para habilitar os recursos EE, passe a chave pública + a licença do cliente:
helm upgrade singlink ./deploy/helm/singlink -n singlink \
--reuse-values \
--set secret.licensePublicKey="..." \
--set secret.licenseKey="..."Veja CE vs EE para o fluxo completo de licenciamento.