Контейнеризатсия ва оркестр
1) Чаро контейнерҳо ва k8s дар IGaming
Меъёри тағирот: тасвирҳои пешгӯишаванда, лӯлаи ягонаи CI/CD.
Устуворӣ: бозоғозии худкор, миқёси уфуқӣ, худтанзимкунӣ.
Ҷудокунии маълумот/минтақа: номҳо/кластерҳо дар қаламрави қаламрав.
Стандартҳои амалиётӣ: сиёсати захираҳо, сабти ягона/ченакҳо/роҳҳо.
Вақте ки лозим нест: дастаи хурд, 2-3 хидматҳо, релизҳои нодир - аз PAA/монолитҳои модулӣ оғоз кунед.
2) Тасвирҳо ва феҳристҳо (OCI/Docker)
2. 1 Маҷмаи тасвирҳо - Принсипҳо
Марҳилаи бисёрҷабҳа: сохтани → вақти корӣ (тасвирҳои лоғар "парешон", "баландкӯҳ" бо эҳтиёт).
Такроршаванда: нусхаҳои ислоҳи/sha256, 'COPY ---chown', '--mount = type = cache' дар Build
SBOM ва имзо: 'аломати cosign/verify', 'slsa provenance', 'танҳо имзо' сиёсат.
Slim-down: нест кардани dev-воситаҳо, дохил кардани 'USER nonroot', 'Ready
Намунаи 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) барои кам кардани таъхир ва риояи GDPR.
Нигоҳдорӣ/дахлнопазирӣ - аз нав сабт кардани барчаспҳоро пешгирӣ кунед, кэшро дар ПО гарм кунед.
Назорати қабул: танҳо тасвирҳои имзошуда/сканшуда (cosign + Trivy/Grype).
3) Оркестр: намунаҳои асосии Кубернетес
3. 1 Примитивҳо
Ҷойгиркунӣ - хадамоти бешаҳрвандӣ (lobby, API).
Statureful-Set - ҳамён/навбатҳо/анбор (номи собит, ҳаҷми устувор).
Daemonset - агентҳои журнал/ҷузъҳои шабака.
Айюб/Крон Ҷобс - муҳоҷират, гузоришҳо, ETL.
3. 2 Захираҳо ва QOS
Муайян кардани 'requests/limits' (CPU/Memory) → Синфҳои QOS ва ҷадвали пешбинишаванда.
Burstable танҳо дар ҷое ки бошуурона аст; интиқодӣ - Кафолат дода мешавад.
Қуттиҳои пардохтро дар ҳавзҳои ҷудошуда ҷойгир кунед (оббозӣ/таҳаммулпазирӣ, гиреҳ-наздикӣ).
3. 3 Устуворӣ ва релизҳо
Озмоишҳо: 'оғози кор', 'зинда будан', 'омодагӣ' (бо танаффус ва давраҳо).
Иҷроиш: 'Maxs' Surge/max 'Дастнорас', канарей через в Ingress/Gateway/Service Mesh.
PDB (Pod
Гиреҳҳои рӯдхона/кордон барои такмилдиҳӣ.
4) Шабака: CNI, хидматҳо, трафики вуруд
4. 1 қабати CNI
Calico/Cilium/Weave - Шабака сиёсати, EBPF барои иҷро.
Қоидаҳои фосила: ҳадди аққали эҳтиёҷот/воридшавӣ.
4. 2 Хизматрасонӣ ва воридшавӣ
Хизматрасонӣ: 'Cluster
Ingress ё Gateway API барои L7: хатсайрҳои роҳ/сарлавҳа/мизбон, TLS, вазнҳои канарӣ.
MTLS дар доираи кластер: тавассути хидматрасонӣ-фикрию (Istio/Linkerd) - дахолати TLS ва сиёсат.
Намунаи HTTPR (дарвозаи API, вазни канарӣ)
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) + 'storage' бо параметрҳои иҷро.
RWX барои мубодила (NFS/FS/Filestore) - бодиққат бо қуфлҳо.
Нусхабардорӣ/барқарорсозӣ: Velero/Kasten, лаҳзаҳои даврӣ, санҷиши барқароршавӣ.
Рамзгузории сатҳи диск ва сатҳи пойгоҳи додаҳо (KMS).
6) Андозаи худкор: HPA/VPA/KEDA
HPA (аз ҷониби CPU/RAM/ченакҳои фармоишӣ - RPS, p95): барои API/lobby.
VPA (тавсияҳо/худкор) - барои коргарони устувор.
KEDA (ба рӯйдод асосёфта) - миқёс аз ҷониби навбатҳои Кафка/SQS/Редис, Крон-шедула.
Кластер Автоскалер - гиреҳҳои сарборӣ; ҳавзҳои гарм барои қуллаҳо (мусобиқаҳо/ҷараёнҳо).
7) Хизматрасонӣ-фикрию (агар лозим бошад)
Сиёсатҳои MTLS/ servis↔servis, иҷозати шахсият (SPIFFE).
Circuit-breaker/timeout/retry, outlier-ejection, соя.
Телеметрия аз қуттӣ: ченакҳои ягона ва роҳҳо.
Дар ҷое, ки ба шумо идоракунии нозуки трафик лозим аст, истифода баред (пардохтҳо, провайдерҳои бозӣ).
8) Амният: Асрҳо, сиёсат, мувофиқат
Асрҳо: менеҷери беруна (AWS/GCP/Azure KMS, Сирри беруна), гардиш.
Policy-as-code: OPA/Gatekeeper/Kyverno - инкор кардани ': охирин', root-USER, host-Path, имтиёзҳо.
Афзоиши ҳуқуқҳо: Фазои номҳо + RBAC, тақсимоти Dev/Stage/Prod, аудит.
Амнияти тасвир: скан дар CI/CD, имзо (cosign), қабул бо имзо.
MTLS ва JWT дар дохили (фикрию), вуруди WAF/Меъёри маҳдудият (Ingress/Gateway).
9) Мушоҳида ва SLO
Ченакҳо: Prometheus/Open .Telemetry, p50/95/99, 4xx/5xx, saturations.
Гузоришҳо: сохтории JSON → Loki/Elastic, ниқоби PII/PAN/IBAN.
Нишонаҳо: OTLP → Tempo/Jaeger; 'trace _ id' аз дарвоза меояд.
SLO: масалан 'Амонат p95 ≤ 300 мс, муваффақият ≥ 98. 5% ', огоҳиҳо дар бораи сӯхтан.
Проактивӣ: панелҳои панели ҳар як хидмат/дар як маршрут, нигаҳдории DLQ ва ақибмонии навбат.
10) CI/CD, Ҳелм, Гитопс
CI: линтерҳо, санҷишҳо (воҳид/шартнома/ҳамгироӣ), SAST/DAST, SBOM.
Helm/Jsonnet/Kustomize: диаграммаҳои декларативӣ бо 'арзишҳо. 'дар муҳитҳо.
GitCCD/Flux): як манбаи ҳақиқат, баррасии манифести PR, тугмаи бозгашт.
Стратегияҳо: кабуд-сабз, канарӣ, соя; муҳоҷирати схема - тавсеа ва шартнома.
Қисмати арзишҳо. yaml (захираҳо/намунаҳо)
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) Банақшагирӣ ва ҷудокунӣ
Гиреҳҳо: Пардохтҳо/ҳамёнҳои алоҳида ба гиреҳҳои "садои паст" бо диски зуд.
Обҳо/таҳаммулпазирӣ: ҳавзҳои муҳофизатшаванда барои бори вазнин.
(Анти-) Наздикшавӣ: Нусхаҳои Smear аз рӯи минтақа/гиреҳ (HA).
Resource-Quota/Limited-Range дар ҷойҳои номӣ - муҳофизат аз "ҳамсояҳои пурғавғо".
12) Бисёрҷанба, бисёр минтақа, DR
Тақсим аз рӯи юрисдиксия: Кластерҳои ИА/Латам/ROW; маълумоти резидентӣ - маҳаллӣ.
Вуруди GSLB/Anycast, мушоҳида ва огоҳиҳо дар як синф.
- Интизории гарм (тавсия дода мешавад): нусхаи пойгоҳи додаҳои интиқодӣ, санҷиши даврии нокомӣ.
- Фаъол-фаъол барои хатсайрҳои хониш/минтақавӣ.
- Нусхабардорӣ: нусхаҳои эҳтиётӣ (Velero), барқароркунии репетиция.
13) Хусусияти IGaming
Пардохтҳо/ҳамён: p95 ≤ 300-500 мс, ҳавзҳои инфиродӣ ва PDB-и қатъӣ; canary 1 → 5 → 10%.
Лобби/мундариҷа: HPA хашмгин аз ҷониби RPS/INP, тасвирҳои тафсон/кэши векторӣ.
Бозиҳои зинда/ҷараёнҳо: LC/ақрабаки ҳадди аққал, танаффуси дароз, пайвастшавӣ часпанда.
Мувофиқат: neimspaces бо сиёсати вазнин, асрори тавассути KMS, аудити тағирот ба версияҳои Helm.
Бозии масъулиятнок: хидмати маҳдудият/басташавӣ - трафики афзалиятнок (аз рӯи сиёсат кушода/пӯшида).
14) Рӯйхати санҷишҳо
Пеш аз гузоштани хидмат
- Тасвири бисёрзинагӣ, решаи USER, имзои cosign, скан гузашт.
- Дархостҳо/маҳдудиятҳо, пробҳо, env/махфӣ аз менеҷери беруна.
- PDB, 'макс дастнорас аст ≤ 1', хомӯшии зебо.
- SLO/огоҳиҳо, пайгирӣ аз дарвоза ба DB.
- Нақшаи канарӣ ва нақшаи бозгашт.
- Сиёсатҳои OPA/Kyverno мегузаранд (реша нест, на host. Path, на: охирин).
Кластер/Платформа
- CNI ва Шабакаи Сиёсат фаъол аст; MTLS (фикрию) дар ҳолатҳои зарурӣ.
- Нигоҳ доштани синф/нигоҳдорӣ, нусхабардорӣ/барқароркунӣ тафтиш карда мешавад.
- HPA/VPA/KEDA танзим карда шудааст; Кластер Autoscaler i ҳавзи гарм.
- RBAC ночиз аст, аудит фаъол аст, сирри KMS аст.
- Gitops: диаграммаҳо/намоишҳо дар анбор, баррасии PR талаб карда мешавад.
15) Анти-намунаҳо
'Навтарин', корбари решавӣ, қабатҳои ғафси пойгоҳ.
No 'requests/limits' → кӯчдиҳӣ/дротлинг.
Омодагӣ = зинда будан.
Омезиши статефулл/бешаҳрвандӣ дар як ҳавз бе ашк.
Муҳоҷирати нақшаҳои "сар-ба" бидуни тавсеа ва шартнома.
Ягона кластер "ба ҳама бозорҳо" бидуни ҷудоии минтақавӣ.
Сабтҳо бо PII/PAN, асрори дар Configmap.
Набудани PDB/дренаж → танаффус дар қуллаҳо ва ҳангоми навсозӣ.
16) Нишондиҳандаҳои платформа (ҳадди аққал)
Кластер: Дархостҳои CPU/mem vs тақсимшаванда, pod-churn, гиреҳ-фишор.
Шабака: p95 дар як масир, 4xx/5xx, барқароркунӣ/тамдиди вақт, хатогиҳои retry-rate, MTLS.
Нигоҳдорӣ: IOPS/ниҳонӣ, хатогиҳои CSI.
Autoscale: қарорҳои 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, Ingress/Gateway, мониторинг/гузоришҳо/роҳҳо, Storage
3. CI/CD ва GIT: Диаграммаҳои Helm, Чоршанбе, Канария/бозгашт, муҳоҷирати схема.
4. Миқёс ва тобоварӣ: HPA/VPA/KEDA, PDB, ҳавзҳои гиреҳ, tains/наздикӣ, нақшаи DR.
Варақаи ниҳоии фиреб
Тасвирҳои борик, имзошуда + сиёсати қабул = таҳкурсии амният.
Намунаҳо, захираҳо, PDB, дренаж = мустаҳкамии озод.
Ҳавзҳои танзими HPA/VPA/KEDA + миқёс бидуни кашиш.
Дарвоза/Ingress + mTLS/OPA = периметри бехатар ва интерком.
Мушоҳидаҳо + SLO + Gitops = Тағиротҳои идорашаванда.
Ҷудокунии минтақавӣ ва DR = мутобиқат ва таҳаммулпазирии гуноҳ.