คู่มือ
ปรับใช้บน Kubernetes
การดีพลอย HA สำหรับโปรดักชันด้วย 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 sticky-session)
- 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" - Sticky session สำหรับ WS ถูกตั้งค่าไว้แล้วที่ระดับ Service (
sessionAffinity: ClientIP) —— ไม่ต้องมี annotation ingress เพิ่มเติม - การจัดการ secret: ใช้ Sealed Secrets หรือ External Secrets แทนการส่งค่าผ่าน CLI
- S3: AWS S3, R2, GCS หรือ MinIO ที่จัดการให้ chart นี้ไม่ ได้มาพร้อม MinIO —— การรันที่เก็บอ็อบเจกต์แบบมีสถานะใน 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 probe ไว้แล้ว) สำหรับเมตริก ให้ชี้ Prometheus ไปยัง sidecar มาตรฐานที่ คุณเลือก สำหรับ tracing ให้ตั้งค่า 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