集裝箱化和編排
1)為什麼在iGaming容器和k8s
更改速度:可預測的圖像,單個CI/CD管道。
可持續性:自動重啟,水平滑冰,自旋爬坡。
數據隔離/區域隔離:管轄範圍內的neimspace/群集。
運營標準:資源策略,單個邏輯/度量/跟蹤。
不需要時:小團隊,2-3服務,稀有版本-從PaaS/模塊化整體開始。
2)圖像和註冊表(OCI/Docker)
2.1映像組裝-原理
多階段:bold → rantime(細微的基本圖像「distroless」,「alpine」謹慎)。
可重復性:在BuildKit 中捕獲/sha 256、「COPY -chown」、「-mount=type=cache」版本。
SBOM和簽名:「cosign sign/verify」,「slsa provenance」,政策「僅簽名」。
Slim-down:刪除dev-tools,包括「USER nonroot」、「readOnlyRootFilesystem」。
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名冊和政策
私人registry+geo復制品(EU/NA)可降低潛伏期和GDPR合規性。
Retention/immutability:禁止覆蓋標簽,在PoP中加熱緩存。
管理控制:僅限簽名/掃描純映像(cosign+Trivy/Grype)。
3)管弦樂隊: 基本的Kubernetes模式
3.1個原語
部署是無狀態服務(大廳,API)。
StatefulSet是錢包/隊列/存儲(虛名、穩定卷)。
DaemonSet-邏輯代理/網絡組件。
Job/CronJob-遷移,報告,ETL。
3.2資源和QoS
指定「requests/limits」 (CPU/Memory) → QoS類和可預測的調度。
Burstable僅在有意識的地方;關鍵的是保證。
將關鍵的支付POD放在專用池上(taints/tolerations, node-affinity)。
3.3可持續性和發布
Probes:「startup」,「liveness」,「readiness」(帶有時間表和時期)。
Rollout: `maxSurge/maxUnavailable`, canary через вес в Ingress/Gateway/Service Mesh.
PDB (PodDisruptionBudget) + graceful shutdown (PreStop hook, `terminationGracePeriodSeconds`).
升級時為Drain/cordon。
4)網絡: CNI,服務,輸入流量
4.1個CNI層
Calico/Cilium/Weave是用於性能的eBPF網絡策略(NetworkPolicy)。
神經間規則:最低要求的egress/ingress。
4.2服務和登錄
Service: `ClusterIP/NodePort/LoadBalancer`.
L7的Ingress或Gateway API:路徑/頭/主機,TLS,金絲雀重量。
集群內的mTLS:通過服務mesh (Istio/Linkerd)-攔截TLS和策略。
HTTPRoute示例(網關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)+帶有性能設置的「storageClass」。
用於Sharing的RWX (NFS/FSx/Filestore)-註意鎖定。
Backup/restore: Velero/Kasten、周期性快照、恢復檢查。
加密:磁盤級別和DB級別(KMS)。
6)自動縮放: HPA/VPA/KEDA
HPA(根據CPU/RAM/定制度標準-RPS,p95):用於API/遊說。
VPA(指南/汽車)-用於穩定操作員。
KEDA(事件驅動)-按隊列Kafka/SQS/Redis, Cron-shedula進行縮放。
Cluster Autoscaler-負載節點;高峰的warm池(比賽/流)。
7) Mesh服務(視需要)
mTLS/ servis↔servis政策,身份授權(SPIFFE)。
電路斷路器/定時/復出,outlier-ejection,鏡像(影子)。
開箱即用的電視度量:單一度量和軌跡。
在需要精簡流量管理(支付、遊戲提供商)的地方使用。
8)安全: 秘密,政策,合規性
保密:外部經理(AWS/GCP/Azure KMS,外部保密),輪換。
策略即代碼:OPA/Gatekeeper/Kyverno-禁令「:最新」,root-USER,hostPath,特權。
權利升級:Namespaces+RBAC,Dev/Stage/Prod拆分,審核。
Image Security: CI/CD中的掃描,簽名(cosign),簽名管理。
內部的mTLS和JWT(mesh),入口處的WAF/Rate-limit(Ingress/Gateway)。
9)可觀察性和SLO
Metrics: Prometheus/OpenTelemetry, p50/95/99, 4xx/5xx, saturations.
Logs:結構JSON → Loki/Elastic,PII/PAN/IBAN掩碼。
Traces:OTLP → Tempo/Jaeger;「trace_id」來自網關。
SLO:例如,'Deposit p 95 ≤ 300 ms,success ≥ 98。5%',alerta burn-rate。
主動性:按服務/按路線行駛,通過DLQ和隊列陣列的看門狗。
10) CI/CD, Helm, GitOps
CI:linters,測試(單位/合同/集成),SAST/DAST,SBOM。
Helm/Jsonnet/Kustomize:環境中帶有「價值」的聲明性圖表。
GitOps (ArgoCD/Flux):單個來源的真相,公關評論清單,滾回按鈕。
策略:藍綠色,金絲雀,陰影;模式遷移-擴展和合同。
values片段。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)規劃和隔離
NodePools:將付款/錢包拆分為「低噪音」快速磁盤節點。
Taints/Tolerations:用於臨界負載的安全池。
(Anti-)Affinity:在區域/節點(HA)上塗抹副本。
ResourceQuota/LimitRange for neimspace-防止「噪音鄰居」。
12) Multiclaster,多區域,DR
按司法管轄區劃分:歐盟/LatAm/ROW集群;居民數據是本地數據。
入口處的GSLB/Anycast,先驗可觀察性和異常值。
- Warm standby(推薦):關鍵數據庫的合成復制品,定期故障檢查。
- 主動讀取/區域路由。
- 備份:備份(Velero),重建恢復。
13) iGaming特點
付款/錢包: p95 ≤ 300-500毫秒,單獨的池和嚴格的PDB;canary 1→5→10%.
大廳/內容:激進的HPA RPS/INP,變暖映像/矢量凱什。
Live games/strims: LC/minimum retrais、長套接字定時器、粘合。
合規性:強硬政策的neimspace,通過KMS的秘密,Helm版本更改的審核。
負責任的遊戲:限制/鎖定服務-優先流量(通過策略失敗打開/關閉)。
14)支票單
在發布服務之前
- 多階段映像、USER nonroot、cosign簽名、掃描通過。
- 來自外部經理的Requests/limits, probes, env/secret。
[] PDB, `maxUnavailable ≤ 1`, graceful shutdown.
- SLO/Alerts,從網關到DB的跟蹤。
- 金絲雀計劃和回滾計劃。
- OPA/Kyverno策略通過(no root,no hostPath,no:latest)。
集群/平臺
- 包括CNI和NetworkPolicy;mTLS (mesh)在哪裏需要。
- StorageClass/重建,備份/還原驗證。
- HPA/VPA/KEDA定制;Cluster Autoscaler и warm-pool.
- RBAC最低,審計包括在內,秘密來自KMS。
- GitOps:存儲庫中的圖表/清單,PR審查是必需的。
15)反模式
「最新」映像,根用戶,「厚」基層。
沒有'requests/limits' → evicia/trottling。
Readiness=liveness(重新開始)。
在單個池上混合statful/stateless,而無需觸摸。
「正面」遷移方案,而無需擴展和合同。
唯一沒有區域隔離的「進入所有市場」集群。
使用PII/PAN的邏輯,ConfigMap中的秘密。
缺少PDB/阻力 →尖峰和升級中的懸崖。
16)平臺度量(最低)
Кластер: CPU/mem requests vs allocatable, pod-churn, node-pressure.
網絡:p95 per-route,4xx/5xx,reset/timeout,retry-rate,mTLS錯誤。
存儲:IOPS/latency, queue-depth, CSI錯誤。
自動軌道:HPA決定,CA事件,熱身時間。
業務:TTP,TtW,FTD-success,供應商付款拒絕。
安全: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通過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)實施過程(沖刺)
1.映像構建和安全:多階段、SBOM、簽名、管理策略。
2.基本平臺k8s:CNI,Ingress/Gateway,監視/識別/跟蹤以及StorageClass。
3.CI/CD和GitOps:Helm圖表,環境,canary/rollback,圖形遷移。
4.滑板和彈性:HPA/VPA/KEDA,PDB,node池,taints/affinity,DR計劃。
最終的spargalka
微妙、簽名的映像+公差策略=安全基礎。
樣本,資源,PDB,drain=發行版的可持續性。
HPA/VPA/KEDA+調諧池=沒有縮放的比例。
Gateway/Ingress+mTLS/OPA=安全周長和內部通信。
Observability+SLO+GitOps=托管更改。
區域隔離和DR=合規性和容錯性。