ガイド
Kubernetes にデプロイ
同梱の Helm chart を使った本番向け HA デプロイ。
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 スティッキーセッション)
- WS アップグレードルール付きの Ingress 1 つ
- オプションの内蔵 postgres + redis StatefulSet
prisma migrate deployを実行するインストール後 Job- 設定と認証情報用の ConfigMap + Secret
本番チェックリスト
- 内蔵データベースを無効化し、マネージドの RDS / ElastiCache を指定します:
--set embedded.postgres.enabled=false --set externalDatabaseUrl=... - オートスケーリングを有効化:
--set autoscaling.enabled=true --set autoscaling.maxReplicas=20 - ingress での TLS:cert-manager をインストールし、次を設定します
ingress.tls.secretName="singlink-tls" - WS のスティッキーセッションは Service レベルで既に設定済みです (
sessionAffinity: ClientIP)—— 追加の ingress アノテーションは不要です - シークレット管理:CLI で値を渡す代わりに Sealed Secrets または External Secrets を使用します
- 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.可観測性
Next.js のヘルスチェックは /api/healthz にあります(既に readiness/liveness プローブに組み込まれています)。メトリクスについては、お好みの標準 sidecar に Prometheus を向けてください。トレーシングについては、ConfigMap でOTEL_EXPORTER_OTLP_ENDPOINT を設定します。
エンタープライズ
EE 機能を有効にするには、公開鍵 + 顧客のライセンスを渡します:
helm upgrade singlink ./deploy/helm/singlink -n singlink \
--reuse-values \
--set secret.licensePublicKey="..." \
--set secret.licenseKey="..."ライセンスフロー全体については CE vs EE を参照してください。