Containerizare și orchestrare
1) De ce containere și k8s în iGaming
Rata de schimbare: imagini previzibile, o singură conductă CI/CD.
Stabilitate: auto-reporniri, scară orizontală, auto-vindecare.
Izolarea datelor/regiunii: spații de nume/clustere sub jurisdicții.
Standarde operaționale: politici de resurse, jurnal unic/metrici/trasee.
Atunci când nu este necesar: o echipă mică, 2-3 servicii, versiuni rare - începe cu PaaS/monolit modular.
2) Imagini și registre (OCI/Docker)
2. 1 Asamblarea imaginilor - Principii
Mai multe etape: construiți → runtime (imagini subțiri de bază „distroless”, „alpine” cu precauție).
Repetabilitate: fixați versiunile/sha256, 'COPY --chown',' --mount = type = cache 'în BuildKit.
SBOM și semnătura: „cosign sign/verify”, „slsa provenience”, „semned only” policy.
Slim-down: șterge dev-tools, includ 'USER nonroot', 'readOnlyRootFilesystem'.
Exemplu Dockerfile (Nod. 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 Registre și politici
Registru privat + geo-replici (EU/NA) pentru a reduce latența și respectarea GDPR.
Retenție/imunitate - prevenirea suprascrierii etichetelor, încălzirea memoriei cache în PoP.
Controlul admiterii: numai imagini semnate/scanate (cosign + Trivy/Grype).
3) Orchestrație: modele de bază Kubernetes
3. 1 Primitive
Implementare - servicii apatride (lobby, API).
StatefulSet - portofel/cozi/depozitare (nume fix, volume stabile).
DaemonSet - agenți jurnal/componente de rețea.
Job/CronJob - migrații, rapoarte, ETL.
3. 2 Resurse și QoS
Specificați 'requests/limits' (CPU/Memory) → clasele QoS și programarea previzibilă.
Burstable numai în cazul în care este conștient; critic - Garantat.
Plasați bazine de plată critice pe bazine dedicate (cauciucuri/toleranțe, nod-afinitate).
3. 3 Durabilitate și eliberări
Sonde: „pornire”, „viață”, „pregătire” (cu termene și perioade).
Rollout: 'maxSurge/maxIndisponibil', canar через вес в Ingress/Gateway/Service Mesh.
PDB (PodDisruptionBudget) + închidere grațioasă (cârlig PreStop, 'terminationGracePeriodSeconds').
Noduri de scurgere/cordon pentru upgrade-uri.
4) Rețea: CNI, servicii, trafic de intrare
4. 1 strat CNI
Calico/Cilium/Weave - NetworkPolicy, eBPF pentru performanță.
Reguli interspațiale: ieșire/intrare minimă necesară.
4. 2 Servicii și autentificare
Serviciu: 'ClusterIP/NodePort/LoadBalancer'.
Ingress sau Gateway API pentru L7: trasee de cale/antet/gazdă, TLS, greutăți canare.
mTLS în cadrul clusterului: prin service-mesh (Istio/Linkerd) - interceptarea TLS și politică.
HTTPRoute Exemplu (Gateway API, greutate canară)
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) Depozitare: CSI/PV/PVC, clase de volum
Furnizor de drivere CSI (EBS/PD/Premium SSD) + "storageClass' cu parametrii de performanță.
RWX pentru partajare (NFS/FSx/Filestore) - atent cu încuietori.
Backup/restaurare: Velero/Kasten, instantanee periodice, verificare recuperare.
Criptare la nivel de disc și nivel de bază de date (KMS).
6) Scalare automată: HPA/VPA/KEDA
HPA (de CPU/RAM/măsurători personalizate - RPS, p95): pentru API/lobby.
VPA (recomandări/auto) - pentru lucrători stabili.
KEDA (event-driven) - scară de cozi Kafka/SQS/Redis, Cron-shedula.
Cluster Autoscaler - noduri de sarcină; piscine calde pentru vârfuri (turnee/fluxuri).
7) Service-mesh (dacă este necesar)
Politicile mTLS/ servis↔servis, autorizația de identitate (SPIFFE).
Circuit-breaker/timeout/retry, outlier-ejection, umbra.
Telemetria din cutie: măsurători uniforme și piste.
Utilizați unde aveți nevoie de gestionarea subtilă a traficului (plăți, furnizori de jocuri).
8) Securitate: Secrete, Politică, Conformitate
Secrete: manager extern (AWS/GCP/Azure KMS, secrete externe), rotație.
Policy-as-code: OPA/Gatekeeper/Kyverno - neagă „: cele mai recente”, root-USER, hostPath, privilegii.
Escaladarea drepturilor: Namespaces + RBAC, Dev/Stage/Prod split, audit.
Image Security: scanare în CI/CD, semnare (cosign), admitere prin semnătură.
mTLS și JWT în interior (mesh), intrare WAF/Rate-limit (Ingress/Gateway).
9) Observabilitate și SLO
Valori: Prometheus/OpenTelemetry, p50/95/99, 4xx/5xx, saturații.
Busteni: structurale JSON → Loki/Elastic, PII/PAN/IBAN mascare.
Urme: OTLP → Tempo/Jaeger; 'trace _ id' vine de la poarta de acces.
SLO: de exemplu "Depozit p95 ≤ 300 ms, succes ≥ 98. 5% ', alerte arde-rata.
Proactivitate: tablouri de bord per service/per-route, DLQ watchdog și lag-uri de coadă.
10) CI/CD, Helm, GitOps
CI: lintere, teste (unitate/contract/integrare), SAST/DAST, SBOM.
Helm/Jsonnet/Kustomize: diagrame declarative cu valori. "pe medii.
GitOps (ArgoCD/Flux): single-source-of-truth, PR manifest review, buton rollback.
Strategii: albastru-verde, canar, umbră; migrații scheme - extinderea și contractarea.
Fragment de valori. yaml (resurse/probe)
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) Planificarea și izolarea
NodePools: Plăți separate/portofel în noduri „cu zgomot redus” cu disc rapid.
Tains/Tolerations: bazine protejate pentru sarcini critice.
(Anti-) Afinitate: replici frotiu de zona/nod (HA).
ResourceCote/LimitRange pe namespaces - protecție împotriva „vecinilor zgomotoși”.
12) Multicluster, multi-regiune, DR
Împărțirea pe jurisdicții: clusterele EU/LatAM/ROW; date rezidente - la nivel local.
Intrare GSLB/Anycast, observabilitate pe clasă și alerte.
- Warm standby (recomandat): replica de baze de date critice, controale periodice failover.
- Activ-activ pentru citiri/rutare regională.
- Backup: copii de rezervă (Velero), recuperare repetiție.
13) Specificitatea iGaming
Plăți/portofel: p95 ≤ 300-500 ms, piscine individuale și PDB strict; canar 1→5→10%.
Lobby/conținut: HPA agresiv prin RPS/INP, imagini încălzite/memorie cache vectorială.
Jocuri/fluxuri live: LC/retraiele minime, intervale lungi de timp pentru prize, lipicioase pe conexiune.
Conformitate: Neimspaces cu Politica dur, secrete prin KMS, auditul modificărilor la lansările Helm.
Joc responsabil: serviciu limită/blocare - trafic prioritar (deschis/închis prin politică).
14) Liste de verificare
Înainte de stabilire a serviciului
- Imagine în mai multe etape, USER nonroot, semnătură cosign, scanare trecut.
- Cereri/limite, sonde, env/secret de la managerul extern.
- PDB, 'maxIndisponibil ≤ 1', închidere grațioasă.
- SLO/alerte, urmărirea de la gateway la DB.
- Model canar și plan rollback.
- Politicile OPA/Kyverno trec (fără rădăcină, fără hostPath, nu: cele mai recente).
Cluster/Platformă
- CNI și NetworkPolicy activate; mTLS (plasă), dacă este necesar.
- StorageClass/retenție, backup/restaurare verificate.
- HPA/VPA/KEDA configurat; Cluster Autoscaler и piscină caldă.
- RBAC este minim, auditul este activat, secretele sunt de la KMS.
- GitOps: diagrame/manifeste în depozit, revizuire PR necesară.
15) Anti-modele
"Ultimele 'images, utilizator rădăcină, straturi de bază groase.
No 'requests/limits' → evacuări/accelerări.
Pregătire = liveness.
Amestecarea statefull/apatrizilor pe aceeași piscină fără zgârieturi.
Migrarea sistemelor „head-on” fără extindere și contract.
Singurul cluster „pe toate piețele” fără izolare regională.
Jurnale cu PII/PAN, secrete în ConfigMap.
Lipsa PDB/drenaj → pauze în vârfuri și în timpul upgrade-uri.
16) Metrica platformei (minim)
Кластер: CPU/mem cereri vs alocabile, pod-chorn, nod-presiune.
Rețea: p95 pe traseu, 4xx/5xx, resetare/timeout, reîncercare, mTLS erori.
Stocare: IOPS/latență, adâncime de coadă, erori CSI.
Autoscale: decizii HPA, evenimente CA, timp de încălzire.
Afaceri: TTP, TtW, FTD-succes, refuzul plăților pe furnizor.
Securitate: inconsecvențe OPA, imagini nesemnate, secrete expirate.
17) Exemple de manifeste
Implementare (API, etichetă canară)
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 (portofel)
yaml apiVersion: policy/v1 kind: PodDisruptionBudget spec:
minAvailable: 3 selector: { matchLabels: { app: wallet } }
HPA (prin RPS prin custom-metrics)
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) Procesul de implementare (prin sprinturi)
1. Asamblarea imaginilor și securitatea: în mai multe etape, SBOM, semnături, politica de admitere.
2. Platforma de bază k8s: CNI, Ingress/Gateway, monitorizare/busteni/trasee, StorageClass.
3. CI/CD și GitOps: diagrame Helm, miercuri, canar/rollback, migrații schema.
4. Scară și reziliență: HPA/VPA/KEDA, PDB, noduri, cauciucuri/afinitate, planul DR.
Foaie de trișat finală
Imagini subțiri, semnate + politica de admitere = fundație de securitate.
Eșantioane, resurse, PDB, scurgere = robustețe de eliberare.
Piscine de tuning HPA/VPA/KEDA + = scară fără desene.
Gateway/Ingress + mTLS/OPA = perimetru securizat și interfon.
Observabilitate + SLO + GitOps = Modificări gestionate.
Izolarea regională și DR = respectarea și toleranța la erori.