الأدلة
النشر على Kubernetes
نشر إنتاجي عالي التوفّر باستخدام مخطط Helm المرفق.
للفِرق التي تحتاج إلى التوفّر العالي أو تعدّد المناطق، أو التي لا ترتاح للاعتماد على مضيف واحد. نوفّر مخطط Helm كاملاً في 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 من Deployments:
webوwsوworker - 2 من Services (web HTTP، وws بجلسة ثابتة)
- Ingress واحد بقاعدة ترقية WS
- StatefulSets اختيارية مدمجة من 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 مُدار. المخطط لا يتضمّن 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). للمقاييس، وجِّه 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 لمعرفة مسار الترخيص الكامل.