Konteýner we orkestr
1) Näme üçin iGaming-de konteýnerler we k8s
Üýtgeşmeleriň tizligi: çak edilýän şekiller, ýeke-täk CI/CD paýlanyş.
Durnuklylyk: awto-täzeden başlamak, gorizontal skeýl, self hiling.
Maglumatlaryň/sebitleriň izolýasiýasy: ýurisdiksiýa tabynlygyndaky nomespeksler/klasterler.
Amal standartlary: resurslar syýasaty, ýeke-täk log/metrika/söwda.
Zerur bolmadyk mahaly: kiçi topar, 2-3 hyzmat, seýrek neşirler - PaaS/modully monolitden başlaň.
2) Şekiller we sanawlar (OCI/Docker)
2. 1 Şekilleri ýygnamak - ýörelgeler
Multi-stage: bild → rantaim (inçe esasy şekiller 'distroless', 'alpine' seresaplylyk bilen).
Gaýtalanma :/sha256, 'COPY --chown', '-mount = type = cache' wersiýalaryny BuildKit-e ýazyň.
SBOM we gol: 'cosign sign/verify', 'slsa provenance', "diňe gol çekilenler" syýasaty.
Slim-down: dev-tools-y aýyryň, 'USER nonroot', 'readOnlyRootFilesystem' -ni açyň.
Dockerfile mysaly (Node. 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 Reýestrler we syýasatlar
Gizlinligi we GDPR-e laýyklygy azaltmak üçin hususy registriýa + geo-replikalar (EU/NA).
Retention/immutability: bellikleri täzeden ýazmagy, PoP-de keşi gyzdyrmagy gadagan edýär.
Admission-control: diňe gol çekilen/skan edilen şekiller (cosign + Trivy/Grype).
3) Orkestr: Kubernetesiň esasy nusgalary
3. 1 Başlangyç
Deployment - stateless-services (lobbi, API).
StatefulSet - gapjyk/nobatlar/ammar (fix-at, durnukly tomlar).
DaemonSet - log agentleri/tor komponentleri.
Job/CronJob - migrasiýa, hasabatlar, ETL.
3. 2 Çeşmeler we QoS
'requests/limits' (CPU/Memory) → QoS synplary we öňünden aýdyp boljak meýilnamalaşdyryş.
Burstable diňe aňly ýagdaýda; kritiki - Guaranteed.
Kritiki töleg PODlaryny bölünen howuzlara goýuň (taints/tolerations, node-affinity).
3. 3 Durnuklylyk we goýberişler
Probes: 'startup', 'liveness', 'readiness' (wagt we döwürler bilen).
Rollout: `maxSurge/maxUnavailable`, canary через вес в Ingress/Gateway/Service Mesh.
PDB (PodDisruptionBudget) + graceful shutdown (PreStop hook, `terminationGracePeriodSeconds`).
Täzelenende Drain/cordon nod.
4) Tor: CNI, hyzmatlar, giriş traffigi
4. 1 CNI gatlak
Calico/Cilium/Weave - ulgam syýasaty (NetworkPolicy), öndürijilik üçin eBPF.
Nomespeksiýa düzgünleri: iň az zerur egress/ingress.
4. 2 Hyzmatlar we giriş
Service: `ClusterIP/NodePort/LoadBalancer`.
L7 üçin Ingress ýa-da Gateway API: ýol/gider/host, TLS, kanar agramy.
mTLS klasteriň içinde: hyzmat-mesh arkaly (Istio/Linkerd) - TLS we syýasaty saklamak.
HTTPRoute mysaly (Gateway API, kanar agramy)
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) Saklamak: CSI/PV/PVC, jilt synplary
Üpjün edijiniň CSI sürüjileri (EBS/PD/Premium SSD) + 'storageClass' öndürijilik parametrleri bilen.
RWX (NFS/FSx/Filestore) - blokirlemelere seresap boluň.
Backup/restore: Velero/Kasten, wagtal-wagtal snapshotlar, dikeldiş barlagy.
Şifrlemek: disk derejesinde we DB (KMS) derejesinde.
6) Awto-masştab: HPA/VPA/KEDA
HPA (CPU/RAM/aýratyn metrikler boýunça - RPS, p95): API/lobbi üçin.
VPA (teklipler/awtoulag) - durnukly workerler üçin.
KEDA (event-driven) - Kafka/SQS/Redis, Cron-şedulalar boýunça masştab.
Cluster Autoscaler - ýük düwünleri; iň ýokary nokatlar üçin warm-howuzlar (ýaryşlar/akymlar).
7) Hyzmat-meş (zerur bolsa)
mTLS/politics service service, şahsyýet taýdan ygtyýarlandyrma (SPIFFE).
Circuit-breaker/timeout/retry, outlier-ejection, aýna (shadow).
Gutudan telewizor metriýasy: birmeňzeş metrikler we ýollar.
Inçe trafik dolandyryşy zerur bolan ýerlerde ulanyň (tölegler, oýun üpjün edijileri).
8) Howpsuzlyk: syrlar, syýasat, laýyklyk
Secrets: daşarky dolandyryjy (AWS/GCP/Azure KMS, External Secrets), aýlanyş.
Policy-as-code: OPA/Gatekeeper/Kyverno - gadaganlyk ': latest', root-USER, hostPath, artykmaçlyklar.
Hukuklaryň güýçlenmegi: Namespaces + RBAC, Dev/Stage/Prod bölünişi, audit.
Image Security: CI/CD-de barlamak, gol çekmek (cosign), gol çekmek üçin admission.
mTLS we JWT içinde (mesh), WAF/Rate-limit girelgesinde (Ingress/Gateway).
9) Synlamak we SLO
Metrics: Prometheus/OpenTelemetry, p50/95/99, 4xx/5xx, saturations.
Logs: gurluş JSON → Loki/Elastic, gizlemek PII/PAN/IBAN.
Traces: OTLP → Tempo/Jaeger; 'trace _ id' şlýuzdan gelýär.
SLO: mysal üçin 'Deposit p95 ≤ 300 ms, success ≥ 98. 5% ', burn-rate alertleri.
Proýaktiwligi: DLQ we nobat laglary boýunça daşbordlar per-service/per-route, watchdog.
10) CI/CD, Helm, GitOps
CI: linterler, synaglar (unit/contract/integration), SAST/DAST, SBOM.
Helm/Jsonnet/Kustomize: 'values.' Bilen gurşalan deklaratiw diagrammalar.
GitOps (ArgoCD/Flux): single-source-of-truth, PR-rewyu manifestleri, rollback düwmesi.
Strategiýalar: blue-green, canary, shadow; shemalaryň göçmegi - expand-and-contract.
Bölek values. yaml (çeşmeler/nusgalar)
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) Meýilleşdirmek we izolýasiýa etmek
NodePools: tölegleri/gapjygy çalt diskli "pes sesli" düwünlere bölüň.
Taints/Tolerations: kritiki ýükler üçin goralýan howuzlar.
(Anti-) Affinity: bellikleri zolaklara/düwünlere (HA) ýaýradyň.
ResourceQuota/LimitRange - "şowhunly goňşulardan" gorag.
12) Multiklaster, köp sebit, DR
Ýurisdiksiýalar boýunça bölünişik: EU/LatAm/ROW klasterleri; rezidentleriň maglumatlary - ýerli.
Girelgede GSLB/Anycast, gözegçilik-gözegçilik we töwekgelçilikler.
- Warm standby (maslahat berilýär): kritiki DB-leriň synx-replikasy, failover wagtal-wagtal barlaglary.
- Okamak/sebitleýin ugrukdyrmak üçin Active-active.
- Ätiýaçlyk: ekaplar (Velero), rehearal dikeldiş.
13) iGaming-aýratynlygy
Tölegler/gapjyk: p95 ≤ 300-500 ms, aýratyn howuzlar we berk PDB; canary 1→5→10%.
Lobbi/mazmun: RPS/INP boýunça agressiw HPA, gyzdyrylan şekiller/wektor kesh.
Durmuş oýunlary/akymlary: LC/minimal retraýlar, soketleriň uzyn wagtlary, baglanyşyk boýunça sticky.
Gabat gelmek: gaty Syýasat, KMS arkaly syrlar, Helm-relizlerdäki üýtgeşmeleriň barlagy.
Jogapkär oýun: çäklendirmeler/blokirlemeler hyzmaty - ileri tutulýan traffik (syýasat boýunça fil-open/close).
14) Çek-listler
Hyzmaty goýmazdan ozal
- Multi-stage şekili, USER nonroot, cosign goly, skaner geçdi.
- Daşarky dolandyryjydan requests/limits, probes, env/secret.
- PDB, `maxUnavailable ≤ 1`, graceful shutdown.
- SLO/alertler, şlýuzdan DB-e çenli.
- Kanareýa shemasy we yzyna gaýtarmak meýilnamasy.
- OPA/Kyverno syýasaty geçýär (no root, no hostPath, no: latest).
Klaster/platforma
- CNI we NetworkPolicy goşuldy; mTLS (meş) gerek ýerinde.
- StorageClass/retenshn, backup/restore barlandy.
- HPA/VPA/KEDA sazlandy; Cluster Autoscaler и warm-pool.
- RBAC minimal, audit girýär, syrlar - KMS-den.
- GitOps: ammardaky diagrammalar/manifestler, PR syn hökmanydyr.
15) Anti-patternler
'latest', root-ulanyjy, "galyň" esasy gatlaklar.
Ýok 'requests/limits' → ewiksiýalar/trottling.
Readiness = liveness.
Taýntsyz bir howuzda statful/statelessiň garyşmagy.
Expand-and-contract bolmasa "maňlaýyna" göçmek.
Sebitleýin izolýasiýa bolmazdan "ähli bazarlara" ýeke-täk klaster.
PII/PAN ýazgylary, ConfigMap-daky syrlar.
PDB/drenajyň ýoklugy → piklerde we täzelenmelerde gaýalar.
16) Platforma metrikleri (iň az)
Кластер: CPU/mem requests vs allocatable, pod-churn, node-pressure.
Tor: p95 per-route, 4xx/5xx, reset/timeout, retry-rate, mTLS-ýalňyşlyklar.
Ammar: IOPS/latency, queue-depth, CSI ýalňyşlyklary.
Awtoskeýl: HPA decisions, CA events, gyzdyrma wagty.
Iş: TTP, TtW, FTD-success, üpjün ediji boýunça töleglerden ýüz öwürmek.
Howpsuzlyk: OPA-nyň gabat gelmezligi, gol çekilmedik şekiller, möhleti geçen syrlar.
17) Manifestleriň mysallary
Deployment (API, kanar label)
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 (gapjyk)
yaml apiVersion: policy/v1 kind: PodDisruptionBudget spec:
minAvailable: 3 selector: { matchLabels: { app: wallet } }
HPA (custom-metrics arkaly RPS boýunça)
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) Giriş prosesi (sprintlar boýunça)
1. Şekilleri ýygnamak we howpsuzlygy: multi-stage, SBOM, gollar, admission syýasaty.
2. k8s esasy platformasy: CNI, Ingress/Gateway, Monitoring/Logy/Trades, StorageClass.
3. CI/CD we GitOps: Helm-diagrammalar, gurşaw, canary/rollback, shema göçmeleri.
4. Skail we durnuklylyk: HPA/VPA/KEDA, PDB, node-howuzlar, taints/affinity, DR-meýilnama.
Jemleýji şpargalka
Inçe, gol çekilen şekiller + giriş syýasaty = howpsuzlygyň esaslary.
Synaglar, çeşmeler, PDB, drain = goýberilişleriň durnuklylygy.
HPA/VPA/KEDA = howuzlary sazlamak.
Gateway/Ingress + mTLS/OPA = howpsuz perimetr we içerki aragatnaşyk.
Observability + SLO + GitOps = dolandyrylýan üýtgeşmeler.
Sebitleýin izolýasiýa we DR = laýyklyk we şowsuzlyga çydamlylyk.