Konteneryzacja i orkiestra
1) Dlaczego kontenery i k8s w iGaming
Szybkość zmian: przewidywalne obrazy, pojedynczy rurociąg CI/CD.
Stabilność: automatyczne uruchamianie, pozioma skala, samouzdrawianie.
Izolacja danych/regionów: obszary nazw/gromady podlegające jurysdykcji.
Normy operacyjne: polityka zasobów, pojedynczy dziennik/mierniki/ścieżki.
Jeśli nie jest potrzebny: mały zespół, 2-3 usługi, rzadkie wydania - zacząć od PaaS/modułowy monolit.
2) Obrazy i rejestry (OCI/Docker)
2. 1 Image Assembly - Zasady
Wielostopniowe: budowa → czas trwania (cienkie obrazy bazowe „bezzasadne”, „alpejskie” z ostrożnością).
Powtarzalność: naprawić wersje/sha256, 'KOPIUJ --chown',' --mount = type = cache 'w opcji ΔKit.
SBOM i podpis: „cosign sign/verify”, „slsa origin”, „signed only” policy.
Slim-down: delete dev-tools, include 'USER nonroot', 'ReadKeyRootFilesystem'.
Przykład Dockerfile (Węzeł. 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 Rejestry i polityki
Prywatny rejestr + repliki geograficzne (EU/NA) w celu zmniejszenia opóźnień i zgodności RODO.
Retencja/odporność - zapobiec nadpisywaniu znaczników, rozgrzać pamięć podręczną w PoP.
Kontrola wstępu: tylko zdjęcia podpisane/skanowane (cosign + Trivy/Grype).
3) Orkiestra: podstawowe wzory kubernetów
3. 1 Prymitywne
Wdrożenie - usługi bezpaństwowe (lobby, API).
Stat Set - portfel/kolejki/przechowywanie (stała nazwa, stabilne woluminy).
DaemonSet - agenci dziennika/komponenty sieciowe.
Praca/CronJob - migracje, raporty, ETL.
3. 2 Zasoby i QoS
Określ 'zapytania/limity' (CPU/Memory) → klasy QoS i przewidywalny harmonogram.
Pęka tylko tam, gdzie jest świadomy; krytyczne - gwarantowane.
Umieść krytyczne strumienie płatności na dedykowanych pulach (tains/tolerancje, powinowactwo węzła).
3. 3 Zrównoważony rozwój i uwolnienia
Sondy: 'startup', 'livity', 'gotowość' (z czasem i okresami).
Rollout: 'maxSurge/maxUnavailable', canary вере, веz Ingress/Gateway/Service Mesh.
PDB (PodDis Budget) + graceful shutdown (PreStop hook, „TermnyGraCeSeconds”).
Węzły drenażu/kordonu do aktualizacji.
4) Sieć: CNI, usługi, ruch wejściowy
4. 1 warstwa CNI
Calico/Cilium/Weave - Polityka, eBPF dla wydajności.
Zasady międzyprzestrzenne: minimalne wymagane wyjście/wejście.
4. 2 Usługi i logowanie
Usługa: „ClusterIP/NodePort/LoadBalancer”.
Ingress lub Gateway API dla L7: ścieżka/nagłówek/trasy hosta, TLS, wagi kanarkowe.
mTLS w ramach klastra: via service-mesh (Istio/Linkerd) - przechwytywanie TLS i polityki.
Przykład HTTPRoute (Gateway API, Waga kanaryjska)
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) Przechowywanie: CSI/PV/PVC, klasy objętości
Dostawca sterowników CSI (EBS/PD/Premium SSD) + ' Class' z parametrami wydajności.
RWX do udostępniania (NFS/FSx/Filestore) - ostrożnie z zamkami.
Kopia zapasowa/przywracanie: Velero/Kasten, okresowe migawki, kontrola odzyskiwania.
Szyfrowanie poziomu dysku i bazy danych (KMS).
6) Automatyczne skalowanie: HPA/VPA/KEDA
HPA (według CPU/RAM/niestandardowych mierników - RPS, p95): dla API/lobby.
VPA (zalecenia/auto) - dla stabilnych pracowników.
KEDA - skala według kolejek Kafka/SQS/Redis, Cron-shedula.
Cluster Autoscaler - węzły obciążenia; ciepłe baseny na szczyty (turnieje/strumienie).
7) Siatka serwisowa (w razie potrzeby)
Zasady mTLS/servis, autoryzacja tożsamości (SPIFFE).
Wyłącznik/timeout/retry, wyrzut zewnętrzny, cień.
Telemetria poza pudełkiem: jednolite mierniki i tory.
Użyj tam, gdzie potrzebujesz subtelnego zarządzania ruchem (płatności, dostawcy gier).
8) Bezpieczeństwo: tajemnice, polityka, zgodność
Sekrety: menedżer zewnętrzny (AWS/GCP/Azure KMS, tajemnice zewnętrzne), obrót.
Policy-as-code: OPA/Gatekeeper/Kyverno - odmówić ': najnowsze', root-UŻYTKOWNIK, Path, przywileje.
Eskalacja praw: Obszary nazw + RBAC, Dev/Stage/Prod split, audyt.
Zdjęcie Bezpieczeństwo: skanowanie w CI/CD, podpisanie (cosign), wstęp przez podpis.
mTLS i JWT wewnątrz (siatka), wejście WAF/limit-rate (Ingress/Gateway).
9) Obserwowalność i SLO
Metryki: Prometheus/OpenTelemetry, p50/95/99, 4xx/5xx, nasycenia.
Kłody: strukturalne JSON → Loki/Elastic, Maskowanie PII/PAN/IBAN.
Ślady: OTLP → Tempo/Jaeger; 'trace _ id' pochodzi z bramy.
SLO: np. "Depozyt p95 ≤ 300 ms, sukces ≥ 98. 5% ', szybkość spalania wpisów.
Proaktywność: deski rozdzielcze per-service/per-route, watchdog DLQ i kolejki.
10) CI/CD, Helm, GitOps
CI: lintery, testy (jednostka/umowa/integracja), SAST/DAST, SBOM.
Helm/Jsonnet/Kustomize: wykresy deklaracyjne z „wartościami”. "o środowiskach.
GitOps (ArgoCD/Flux): pojedyncze źródło prawdy, przegląd manifestu PR, przycisk rolki.
Strategie: niebiesko-zielony, kanaryjski, cień; schemat migracji - rozszerzenie i kontrakt.
Fragment wartości. yaml (zasoby/próbki)
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) Planowanie i izolacja
NodePools: Oddzielne płatności/portfel w węzłach „niskiego hałasu” z szybkim dyskiem.
Tains/Tolerancje: chronione baseny dla obciążeń krytycznych.
(Anti-) Powinowactwo: Repliki rozmazu według strefy/węzła (HA).
Limit/Limit Range na obszarach nazw - ochrona przed „hałaśliwymi sąsiadami”.
12) Wielokomórkowy, wielobranżowy, DR
Podział według jurysdykcji: klastry UE/Latam/ROW; dane rezydenta - lokalnie.
Wejście GSLB/Anycast, obserwowalność na klasę i wpisy.
- Ciepłe czuwanie (zalecane): replika krytycznych baz danych, okresowe kontrole awaryjne.
- Aktywny dla odczytu/routingu regionalnego.
- Kopia zapasowa: kopie zapasowe (Velero), odzyskiwanie prób.
13) Specyfika iGaming
Płatności/portfel: p95 ≤ 300-500 ms, pojedyncze puli i ścisły WPB; kanaryjski 1 → 5 → 10%.
Lobby/zawartość: agresywny HPA przez RPS/INP, podgrzewane obrazy/pamięć podręczna wektora.
Gry na żywo/strumienie: LC/minimalne przekaźniki, długie czasowe gniazdo, lepkie na połączeniu.
Zgodność: neimspaces with hard Policy, tajemnice za pośrednictwem KMS, audyt zmian w wersjach Helm.
Odpowiedzialna gra: limit/blokowanie usługi - priority traffic (fail-open/close by policy).
14) Listy kontrolne
Przed wykonaniem usługi
- Wielostopniowy obraz, USER nonroot, cosign signature, scan passed.
- Żądania/limity, sondy/tajemnica od menedżera zewnętrznego.
- PDB, „maxNiedostępne ≤ 1”, graceful shutdown.
- SLO/alerty, odwzorowanie z bramy do DB.
- Schemat kanaryjski i plan wsteczny.
- Zasady OPA/Kyverno przechodzą (bez korzenia, bez Ścieżka, nie: najnowsza).
Klaster/Platforma
- Obsługa CNI i Polityki w zakresie CNI; mTLS (oczek sieci) w razie potrzeby.
- Klasa/retencja, sprawdzone kopie zapasowe/przywracanie.
- Konfiguracja HPA/VPA/KEDA; Gromada Autoscaler - ciepły basen.
- RBAC jest minimalny, audyt jest włączony, sekrety są z KMS.
- GitOps: wykresy/manifesty w repozytorium, wymagany przegląd PR.
15) Anty-wzory
'Najnowsze' obrazy, użytkownik korzeniowy, grube warstwy bazowe.
Brak 'zapytań/limitów' → eksmisje/uderzenia.
Gotowość = los.
Mieszanie statefull/bezpaństwowiec na tym samym basenie bez skażeń.
Migracja systemów „head-on” bez rozszerzenia i kontraktu.
Jedyny klaster „na wszystkie rynki” bez izolacji regionalnej.
Dzienniki z PII/PAN, sekrety w ConfigMap.
Brak PDB/drenażu → przerwy w szczytach i podczas aktualizacji.
16) Mierniki peronu (minimum)
Кластей: CPU/mem wnioski vs przydzielalne, pod-churn, ciśnienie węzła.
Sieć: p95 na trasę, 4xx/5xx, reset/timeout, retry-rate, błędy mTLS.
Przechowywanie: IOPS/opóźnienie, głębokość kolejki, błędy CSI.
Autoskale: decyzje HPA, wydarzenia CA, czas rozgrzewki.
Biznes: TTP, TtW, FTD-sukces, odmowa płatności na dostawcę.
Bezpieczeństwo: niespójności OPA, niezarejestrowane obrazy, utracone tajemnice.
17) Przykłady manifestów
Wdrożenie (API, etykieta kanaryjska)
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 (portfel)
yaml apiVersion: policy/v1 kind: PodDisruptionBudget spec:
minAvailable: 3 selector: { matchLabels: { app: wallet } }
HPA (za pośrednictwem RPS za pośrednictwem metryki niestandardowej)
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) Proces wdrażania (według sprintów)
1. Montaż i bezpieczeństwo obrazu: wielostopniowe, SBOM, podpisy, polityka przyjmowania.
2. Platforma bazowa k8s: CNI, Ingress/Gateway, monitoring/logs/trails, Class.
3. CI/CD i GitOps: mapy Helm, środy, kanaryjski/rollback, migracje schematów.
4. Skala i odporność: HPA/VPA/KEDA, PDB, puli węzłów, plamy/powinowactwo, plan DR.
Końcowy arkusz oszustwa
Cienkie, podpisane zdjęcia + polityka przyjmowania = fundacja bezpieczeństwa.
Próbki, zasoby, PDB, drenaż = odporność na uwalnianie.
HPA/VPA/KEDA + tuning baseny = skala bez wyciągów.
Gateway/Ingress + mTLS/OPA = bezpieczny obwód i domofon.
Obserwowalność + SLO + GitOps = Zarządzane zmiany.
Izolacja regionalna i DR = zgodność i tolerancja błędów.