الحاويات وتنظيمها
1) لماذا الحاويات و k8s في iGaming
معدل التغيير: صور يمكن التنبؤ بها، خط أنابيب CI/CD واحد.
الاستقرار: إعادة التشغيل التلقائي، المقياس الأفقي، الشفاء الذاتي.
عزل البيانات/المناطق: مساحات الأسماء/المجموعات الخاضعة للولايات القضائية.
المعايير التشغيلية: سياسات الموارد، سجل/مقاييس/مسارات وحيدة.
عند عدم الحاجة: فريق صغير، 2-3 خدمات، إصدارات نادرة - ابدأ بـ PaaS/modular monolith.
2) الصور والسجلات (OCI/Docker)
2. 1 تجميع الصور - المبادئ
متعدد المراحل: بناء وقت التشغيل → (صور القاعدة الرقيقة «غير مجردة»، «جبال الألب» بحذر).
التكرار: الإصدارات الثابتة/sha256، 'COPY -chown'،' -mount = type = cache 'في BuildKit.
SBOM والتوقيع: «علامة كوزية/التحقق»، «مصدر slsa»، سياسة «توقيع فقط».
Slim-down: احذف أدوات التطوير، بما في ذلك "المستخدم غير الجذري"، "اقرأ OnlyRootFilesystem'.
مثال Dockerfile (عقدة. js)
dockerfile build
FROM node:22-bookworm AS build
WORKDIR /app
COPY package. json./
RUN npm ci --omit=dev
COPY..
RUN npm run build
runtime (distroless)
FROM gcr. io/distroless/nodejs22
WORKDIR /srv
COPY --from=build /app/dist./dist
COPY --from=build /app/node_modules./node_modules
USER 10001
ENV NODE_ENV=production
CMD ["dist/server. js"]
2. 2 سجلات وسياسات
السجل الخاص + النسخ المتماثلة الجغرافية (EU/NA) لتقليل زمن الوصول والامتثال للائحة العامة لحماية البيانات.
الاحتفاظ/المناعة - منع الكتابة الزائدة للعلامات، وتسخين المخبأ في PoP.
التحكم في القبول: الصور الموقعة/الممسوحة ضوئيًا فقط (cosign + Trivy/Grype).
3) التنسيق: أنماط كوبرنيتس الأساسية
3. 1 البدائيات
النشر - الخدمات عديمة الجنسية (لوبي، API).
StatefulSet - محفظة/قوائم انتظار/تخزين (اسم ثابت، أحجام ثابتة).
DaemonSet - عوامل تسجيل/مكونات الشبكة.
Job/CronJob - migrations, reports, ETL.
3. 2 الموارد ورصد الجودة
حدد «الاستفسارات/الحدود» (وحدة المعالجة المركزية/الذاكرة) → فئات QoS والجدولة القابلة للتنبؤ.
لا يمكن تفجيرها إلا عندما تكون واعية ؛ حرج - مضمون.
ضع كبسولات الدفع الحرجة على مجمعات مخصصة (تكهنات/تحملات، تقارب العقدة).
3. 3 الاستدامة والإطلاقات
المجسات: «بدء التشغيل»، «الحياة»، «الاستعداد» (مع المهلات والفترات).
الطرح: «MaxSurge/maxUnailable»، canary через вес в Ingress/Gateway/Service Mesh.
PDB (PodDistructionBudget) + إغلاق رشيق (PreStop hook، "إنهاء GracePeriodSeconds').
عقد التصريف/الطوق للترقيات.
4) الشبكة: CNI والخدمات وحركة المدخلات
4. 1 طبقة CNI
Calico/Cilium/Weave - NetworkPolicy، eBPF للأداء.
القواعد المشتركة بين الفضاء: الحد الأدنى المطلوب للخروج/الدخول.
4. 2 خدمات وتسجيل دخول
الخدمة: «ClusterIP/NodePort/LoadBalancer».
الدخول أو واجهة برمجة تطبيقات البوابة لـ L7: طرق المسار/الرأس/المضيف، TLS، أوزان الكناري.
mTLS داخل المجموعة: عبر شبكة الخدمة (Istio/Linkerd) - اعتراض TLS والسياسة.
مثال HTTPRoute (بوابة برمجة التطبيقات، وزن الكناري)
yaml apiVersion: gateway. networking. k8s. io/v1 kind: HTTPRoute spec:
rules:
- backendRefs:
- name: lobby-v1 weight: 90 port: 8080
- name: lobby-v2 weight: 10 port: 8080
5) التخزين: CSI/PV/PVC، فئات الحجم
سائقي CSI المزود (EBS/PD/Premium SSD) + «فئة التخزين» مع معلمات الأداء.
RWX للمشاركة (NFS/FSx/Filestore) - احذر مع الأقفال.
النسخ الاحتياطي/الاستعادة: Velero/Kasten، لقطات دورية، فحص الاسترداد.
تشفير مستوى القرص ومستوى قاعدة البيانات (KMS).
6) القياس التلقائي: HPA/VPA/KEDA
HPA (بواسطة CPU/RAM/مقاييس مخصصة - RPS، p95): لـ API/lobby.
VPA (توصيات/سيارات) - للعمال المستقرين.
KEDA (مدفوعة بالحدث) - مقياس من طوابير Kafka/SQS/Redis، Cron-shedula.
Cluster Autoscaler - عقد التحميل ؛ برك دافئة للقمم (البطولات/الجداول).
7) شبكة الخدمة (إذا لزم الأمر)
MTLS/ servis↔servis السياسات، تصريح الهوية (SPIFFE).
قاطع دائرة/مهلة/إعادة تجربة، طرد خارجي، ظل.
القياس عن بعد خارج الصندوق: مقاييس ومسارات موحدة.
استخدم حيث تحتاج إلى إدارة حركة مرور دقيقة (المدفوعات، مزودي الألعاب).
8) الأمن: الأسرار والسياسة والامتثال
الأسرار: المدير الخارجي (AWS/GCP/Azure KMS، الأسرار الخارجية)، التناوب.
Policy-as-code: OPA/Gatekeeper/Kyverno - deny ': أحدث'، root-USER، hostPath، الامتيازات.
تصعيد الحقوق: مساحات الأسماء + RBAC، Dev/Stage/Prod split، التدقيق.
أمن الصورة: مسح في CI/CD، توقيع (تجميل)، قبول بالتوقيع.
mTLS و JWT داخل (شبكة)، WAF/مدخلات حد المعدل (الدخول/البوابة).
9) إمكانية الرصد و SLO
المقاييس: Prometheus/OpenTelemetry، p50/95/99، 4xx/5xx، التشبع.
الجذوع: قناع هيكلي JSON → Loki/Elastic، PII/PAN/IBAN.
الآثار: OTLP → Tempo/Jaeger ؛ «أثر _ هوية» يأتي من البوابة.
SLO: على سبيل المثال 'Deposit p95 ≤ 300 ms, success ≥ 98. 5٪، تنبيهات معدل الحرق.
الاستباقية: لوحات القيادة لكل خدمة/لكل مسار، ومراقب DLQ وتأخر قائمة الانتظار.
10) CI/CD، Helm، GitOps
CI: البطانات، الاختبارات (الوحدة/العقد/التكامل)، SAST/DAST، SBOM.
Helm/Jsonnet/Kustomize: مخططات إعلانية ذات قيم. على البيئات.
GitOps (ArgoCD/Flux): مصدر واحد للحقيقة، مراجعة بيان العلاقات العامة، زر التراجع.
الاستراتيجيات: الأزرق - الأخضر، الكناري، الظل ؛ هجرات المخطط - التوسع والعقد.
جزء القيم. يامل (الموارد/العينات)
yaml resources:
requests: { cpu: "200m", memory: "256Mi" }
limits: { cpu: "500m", memory: "512Mi" }
livenessProbe: { httpGet: { path: /healthz, port: 8080 }, initialDelaySeconds: 20, periodSeconds: 10 }
readinessProbe: { httpGet: { path: /readyz, port: 8080 }, initialDelaySeconds: 5, periodSeconds: 5 }
11) التخطيط والعزلة
NodePools: مدفوعات/محفظة منفصلة إلى عقد «ضوضاء منخفضة» مع قرص سريع.
Tains/Tolerations: برك محمية للأحمال الحرجة.
(ضد) التقارب: نسخ طبق الأصل من اللطاخة حسب المنطقة/العقدة (HA).
ResourceCota/LimiteRange على مساحات الأسماء - الحماية من «الجيران الصاخبين».
12) Multicluster، متعدد المناطق، DR
التقسيم حسب الولاية القضائية: مجموعات الاتحاد الأوروبي/LatAM/ROW ؛ بيانات المقيمين - محليا.
مدخلات GSLB/Anycast وإمكانية الملاحظة والتنبيهات لكل فئة.
- الاستعداد الدافئ (موصى به): نسخة طبق الأصل من قواعد البيانات الهامة، وفحوصات الفشل الدورية.
- نشط للقراءات/التوجيه الإقليمي.
- النسخ الاحتياطي: نسخ احتياطية (فيليرو)، استعادة البروفة.
13) خصوصية iGaming
المدفوعات/المحفظة: p95 ≤ 300-500 ms، المجمعات الفردية ومصرف التنمية الشعبي الصارم ؛ الكناري 1→5→10%
اللوبي/المحتوى: HPA عدواني بواسطة RPS/INP، صور ساخنة/مخبأ ناقل.
الألعاب/البث المباشر: LC/الحد الأدنى من عمليات إعادة التصوير، والمقابس الطويلة، واللاصقة على الاتصال.
الامتثال: مساحات صغيرة مع سياسة صارمة، أسرار من خلال KMS، تدقيق التغييرات في إصدارات Helm.
اللعبة المسؤولة: خدمة الحد/الحظر - أولوية حركة المرور (فاشلة - مفتوحة/مغلقة حسب السياسة).
14) القوائم المرجعية
قبل وضع الخدمة
- صورة متعددة المراحل، مستخدم غير جذري، توقيع تجميلي، مر مسح ضوئي.
- طلبات/حدود، تحقيقات، env/سرية من مدير خارجي.
- PDB، «MaxUnavailable ≤ 1»، إغلاق رشيق.
- SLO/تنبيهات، تتبع من البوابة إلى DB.
- نمط الكناري وخطة التراجع.
- تمرير سياسات OPA/Kyverno (لا جذر، لا مسار مضيف، لا: أحدث).
المجموعة/المنصة
- تم تمكين CNI و NetworkPolicy ؛ mTLS (شبكة) عند الضرورة.
- فحص فئة التخزين/الاحتفاظ، النسخ الاحتياطي/الاستعادة.
- هيكل HPA/VPA/KEDA ؛ Cluster Autoscaler и حمام سباحة دافئ.
- RBAC هو الحد الأدنى، والتدقيق ممكن، والأسرار من KMS.
- GitOps: الرسوم البيانية/البيانات في المستودع، استعراض العلاقات العامة مطلوب.
15) الأنماط المضادة
أحدث الصور، مستخدم الجذر، طبقات أساسية سميكة.
لا توجد «استفسارات/حدود» → عمليات الإخلاء/الاختناق.
الاستعداد = الحيوية.
مزج الدولة/عديمي الجنسية في نفس البركة دون تلويث.
هجرات المخططات «وجهاً لوجه» دون توسيع وعقد.
المجموعة الوحيدة «لجميع الأسواق» بدون عزلة إقليمية.
سجلات مع PII/PAN، أسرار في ConfigMap.
نقص PDB/فواصل → الصرف في القمم وأثناء الترقيات.
16) مقاييس المنصة (الحد الأدنى)
Кластер: طلبات وحدة المعالجة المركزية/mem مقابل مخصصة، pod-churn، ضغط العقدة.
الشبكة: p95 لكل مسار، 4xx/5xx، إعادة ضبط/مهلة، معدل إعادة التجربة، أخطاء mTLS.
التخزين: IOPS/زمن الانتظار، عمق قائمة الانتظار، أخطاء CSI.
المقياس التلقائي: قرارات HPA، أحداث CA، وقت الإحماء.
الأعمال: TTP، TtW، نجاح FTD، رفض المدفوعات على المزود.
الأمن: تناقضات OPA، صور غير موقعة، أسرار منتهية الصلاحية.
17) أمثلة على البيانات
النشر (API، بطاقة الكناري)
yaml apiVersion: apps/v1 kind: Deployment metadata: { name: wallet-api, labels: { app: wallet, track: stable } }
spec:
replicas: 4 strategy: { type: RollingUpdate, rollingUpdate: { maxSurge: 1, maxUnavailable: 1 } }
selector: { matchLabels: { app: wallet, track: stable } }
template:
metadata: { labels: { app: wallet, track: stable } }
spec:
serviceAccountName: wallet-sa containers:
- name: api image: registry. local/wallet/api@sha256:...
ports: [{ containerPort: 8080 }]
resources:
requests: { cpu: "250m", memory: "256Mi" }
limits: { cpu: "500m", memory: "512Mi" }
readinessProbe: { httpGet: { path: /readyz, port: 8080 }, periodSeconds: 5 }
livenessProbe: { httpGet: { path: /healthz, port: 8080 }, initialDelaySeconds: 20 }
securityContext:
runAsNonRoot: true readOnlyRootFilesystem: true
PDB (محفظة)
yaml apiVersion: policy/v1 kind: PodDisruptionBudget spec:
minAvailable: 3 selector: { matchLabels: { app: wallet } }
HPA (عبر RPS عبر المقاييس المخصصة)
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler spec:
minReplicas: 4 maxReplicas: 40 metrics:
- type: Pods pods:
metric:
name: http_requests_per_second target:
type: AverageValue averageValue: "50"
18) عملية التنفيذ (حسب سباقات السرعة)
1. تجميع الصور والأمن: متعدد المراحل، SBOM، التوقيعات، سياسة القبول.
2. المنصة الأساسية k8s: CNI، الدخول/البوابة، المراقبة/السجلات/المسارات، فئة التخزين.
3. CI/CD و GitOps: مخططات Helm، أيام الأربعاء، الكناري/التراجع، هجرات المخطط.
4. الحجم والمرونة: HPA/VPA/KEDA، PDB، مجمعات العقدة، tains/affinity، خطة DR.
ورقة الغش النهائية
صور رقيقة وموقعة + سياسة قبول = مؤسسة أمنية.
عينات، موارد، PDB، صرف = صلابة الإطلاق.
HPA/VPA/KEDA + مجمعات الضبط = مقياس بدون سحب.
البوابة/الدخول + mTLS/OPA = محيط آمن واتصال داخلي.
قابلية الملاحظة + SLO + GitOps = التغييرات المدارة.
العزلة الإقليمية و DR = الامتثال وتحمل الأخطاء.