Guías
Despliegue en Kubernetes
Despliegue HA en producción con el chart Helm incluido.
Para equipos que necesitan HA, multi-región, o que no se sienten cómodos con un único host. Ofrecemos un Helm chart completo en deploy/helm/singlink/.
Arquitectura
Ingress (nginx / Cloudflare)
│
┌──────────┼──────────┐
│ │ │
web (×N) ws (×N) worker (×N)
│ │ │
└────┬─────┴────┬─────┘
│ │
Postgres Redis S3
(managed) (managed) (managed)Instalación
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="..."Qué se crea
- 3 Deployments:
web,ws,worker - 2 Services (web HTTP, ws sticky-session)
- 1 Ingress con regla de upgrade de WS
- StatefulSets postgres + redis embebidos opcionales
- Job post-instalación que ejecuta
prisma migrate deploy - ConfigMap + Secret para la configuración y las credenciales
Lista de verificación para producción
- Desactiva las bases de datos embebidas y apunta a RDS / ElastiCache gestionados:
--set embedded.postgres.enabled=false --set externalDatabaseUrl=... - Activa el autoescalado:
--set autoscaling.enabled=true --set autoscaling.maxReplicas=20 - TLS en el ingress: instala cert-manager y configura
ingress.tls.secretName="singlink-tls" - La sticky session para WS ya está configurada a nivel de Service (
sessionAffinity: ClientIP) —— no se necesita ninguna anotación de ingress adicional - Gestión de secretos: usa Sealed Secrets o External Secrets en lugar de pasar valores por la CLI
- S3: AWS S3, R2, GCS, o un MinIO gestionado. El chart no incluye MinIO —— ejecutar almacenamiento de objetos con estado en K8s no es divertido
Escalado
# 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.Actualizaciones
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.Observabilidad
El healthcheck de Next.js está en /api/healthz (ya conectado a las sondas de readiness/liveness). Para las métricas, apunta Prometheus al sidecar estándar de tu elección. Para el tracing, define OTEL_EXPORTER_OTLP_ENDPOINT en el ConfigMap.
Enterprise
Para habilitar las funciones EE, pasa la clave pública + la licencia del cliente:
helm upgrade singlink ./deploy/helm/singlink -n singlink \
--reuse-values \
--set secret.licensePublicKey="..." \
--set secret.licenseKey="..."Consulta CE vs EE para el flujo de licenciamiento completo.