Guides
Déployer sur Kubernetes
Déploiement HA en production avec le chart Helm fourni.
Pour les équipes qui ont besoin de HA, de multi-région, ou qui ne sont pas à l'aise avec un hôte unique. Nous fournissons un Helm chart complet dans deploy/helm/singlink/.
Architecture
Ingress (nginx / Cloudflare)
│
┌──────────┼──────────┐
│ │ │
web (×N) ws (×N) worker (×N)
│ │ │
└────┬─────┴────┬─────┘
│ │
Postgres Redis S3
(managed) (managed) (managed)Installation
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="..."Ce qui est créé
- 3 Deployments :
web,ws,worker - 2 Services (web HTTP, ws session persistante)
- 1 Ingress avec règle de mise à niveau WS
- StatefulSets postgres + redis embarqués en option
- Job post-installation qui exécute
prisma migrate deploy - ConfigMap + Secret pour la configuration et les identifiants
Liste de contrôle pour la production
- Désactivez les bases de données embarquées et pointez vers des RDS / ElastiCache managés :
--set embedded.postgres.enabled=false --set externalDatabaseUrl=... - Activez l'autoscaling :
--set autoscaling.enabled=true --set autoscaling.maxReplicas=20 - TLSau niveau de l'ingress : installez cert-manager et définissez
ingress.tls.secretName="singlink-tls" - La session persistante pour WS est déjà configurée au niveau du Service (
sessionAffinity: ClientIP) —— aucune annotation d'ingress supplémentaire n'est nécessaire - Gestion des secrets : utilisez Sealed Secrets ou External Secrets au lieu de passer les valeurs via la CLI
- S3 : AWS S3, R2, GCS, ou un MinIO managé. Le chart ne fournit pasMinIO —— exécuter un stockage d'objets avec état dans K8s n'est pas amusant
Mise à l'échelle
# 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.Mises à niveau
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.Observabilité
Le healthcheck Next.js se trouve à /api/healthz (déjà branché sur les sondes readiness/liveness). Pour les métriques, pointez Prometheus vers le sidecar standard de votre choix. Pour le tracing, définissez OTEL_EXPORTER_OTLP_ENDPOINT dans le ConfigMap.
Entreprise
Pour activer les fonctionnalités EE, passez la clé publique + la licence du client :
helm upgrade singlink ./deploy/helm/singlink -n singlink \
--reuse-values \
--set secret.licensePublicKey="..." \
--set secret.licenseKey="..."Voir CE vs EE pour le flux complet de licence.