Руководства
Развёртывание в Kubernetes
Высокодоступное продакшен-развёртывание с прилагаемым Helm chart.
Для команд, которым нужны HA, мультирегион, или которые не готовы полагаться на единственный хост. Мы поставляем полный Helm chart в deploy/helm/singlink/.
Архитектура
Ingress (nginx / Cloudflare)
│
┌──────────┼──────────┐
│ │ │
web (×N) ws (×N) worker (×N)
│ │ │
└────┬─────┴────┬─────┘
│ │
Postgres Redis S3
(managed) (managed) (managed)Установка
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="..."Что создаётся
- 3 Deployment:
web,ws,worker - 2 Service (web HTTP, ws с закреплённой сессией)
- 1 Ingress с правилом обновления WS
- Опциональные встроенные StatefulSet postgres + redis
- Job после установки, который выполняет
prisma migrate deploy - ConfigMap + Secret для конфигурации и учётных данных
Чек-лист для продакшена
- Отключите встроенные базы данных и укажите управляемые RDS / ElastiCache:
--set embedded.postgres.enabled=false --set externalDatabaseUrl=... - Включите автомасштабирование:
--set autoscaling.enabled=true --set autoscaling.maxReplicas=20 - TLS на уровне ingress: установите cert-manager и задайте
ingress.tls.secretName="singlink-tls" - Закреплённая сессия для WS уже настроена на уровне Service (
sessionAffinity: ClientIP) —— дополнительная аннотация ingress не нужна - Управление секретами: используйте Sealed Secrets или External Secrets вместо передачи значений через CLI
- S3: AWS S3, R2, GCS или управляемый MinIO. Chart не поставляет MinIO —— запускать stateful-хранилище объектов в K8s не доставляет удовольствия
Масштабирование
# 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.Обновления
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.Наблюдаемость
Healthcheck Next.js находится по адресу /api/healthz (уже подключён к пробам readiness/liveness). Для метрик направьте Prometheus на стандартный sidecar по вашему выбору. Для трассировки задайте OTEL_EXPORTER_OTLP_ENDPOINT в ConfigMap.
Корпоративная версия
Чтобы включить функции EE, передайте открытый ключ + лицензию клиента:
helm upgrade singlink ./deploy/helm/singlink -n singlink \
--reuse-values \
--set secret.licensePublicKey="..." \
--set secret.licenseKey="..."Полный процесс лицензирования см. в CE vs EE.