GH GambleHub

コンテナ化とオーケストレーション

1)なぜiGamingのコンテナとk8s

変更率:予測可能な画像、単一のCI/CDパイプライン。
安定性:自動再起動、水平スケール、自己治癒。
データ/地域の分離:管轄下の名前空間/クラスタ。
運用標準:リソースポリシー、シングルログ/メトリクス/トレイル。

必要でない場合:小さなチーム、2-3サービス、まれなリリース-PaaS/モジュラーモノリスから始まります。

2)画像とレジストリ(OCI/Docker)

2.1イメージアセンブリ-原則

マルチステージ:ビルド→ランタイム(薄いベースイメージ'distroless'、注意して'alpine')。
再現性:BuildKitのバージョン/sha256、 'COPY --chown'、' --mount=type=cache'を修正しました。
SBOMと署名:'cosign sign/verify'、 'slsa profenance'、 'signed only'ポリシー。
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レジスタとポリシー

プライベートレジストリ+ジオレプリカ(EU/NA)により、レイテンシーとGDPR準拠を低減。
保持/免除-タグの上書きを防ぎ、PoPでキャッシュをウォームアップします。
入場制御:署名された/スキャンされたイメージだけ(cosign+Trivy/Grype)。

3)オーケストレーション: 基本的なKubernetesパターン

3.1プリミティブ

展開-ステートレスサービス(ロビー、API)。
StatefulSet-ウォレット/キュー/ストレージ(固定名、安定したボリューム)。
DaemonSet-ログエージェント/ネットワークコンポーネント。
ジョブ/CronJob-移行、レポート、ETL。

3.2リソースとQoS

"requests/limits' (CPU/メモリ)→QoSクラスと予測可能なスケジューリングを指定します。
それが意識されている場合にのみ破裂する。重大-保証される。
専用プール(tains/tolerations、 node-affinity)に重要な支払いポッドを配置します。

3.3サステナビリティとリリース

プローブ:'startup'、 'liveness'、 'readiness'(タイムアウトと期間付き)。
Rollout: 'maxSurge/maxUnavailable'、 canarium'、Ingress/Gateway/Service Mesh。
PDB (PodDisruptionBudget)+graceful shutdown (PreStopフック、'terminationGracePeriodSeconds')。
アップグレードのためのドレイン/コードノード。

4)ネットワーク: CNIのサービス、入力交通

4.1 CNIレイヤー

Calico/Cilium/Weave-NetworkPolicy、パフォーマンスのためのeBPF。
空間間規則:最小必要な出力/入力。

4.2サービスとログイン

サービス:'ClusterIP/NodePort/LoadBalancer'。
IngressまたはGateway API for L7: path/header/host routes、 TLS、 canary weights。
クラスタ内のmTLS:サービスメッシュ経由(Istio/Linkerd)-TLSと政治の傍受。

HTTPRouteの例(Gateway API、 Canary Weight)

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)+パフォーマンスパラメータ付きの「ストレージクラス」。
共有のためのRWX (NFS/FSx/Filestore)-ロックに注意してください。
バックアップ/リストア:Velero/Kasten、定期的なスナップショット、リカバリチェック。
ディスクレベルおよびデータベースレベル(KMS)暗号化。

6)自動スケーリング: HPA/VPA/KEDA

HPA (CPU/RAM/カスタムメトリック-RPS、 p95): API/ロビー用。
VPA(推奨/自動車)-安定した労働者のための。
KEDA(イベント駆動)-Kafka/SQS/Redisキュー、Cron-shedulaによるスケール。
クラスタオートスケーラー-ロード・ノード;ピーク(トーナメント/ストリーム)の暖かいプール。

7)サービスメッシュ(必要に応じて)

mTLS/ servis↔servisポリシー、ID認可(SPIFFE)。
サーキットブレーカー/タイムアウト/再試行、アウトリアイジェクション、シャドウ。
ボックス外のテレメトリー:均一なメトリックとトラック。
微妙なトラフィック管理(支払い、ゲームプロバイダー)が必要な場所で使用してください。

8)セキュリティ: 秘密、政治、コンプライアンス

秘密:外部マネージャ(AWS/GCP/Azure KMS、外部秘密)、回転。
Policy-as-code: OPA/Gatekeeper/Kyverno-deny':latest'、 root-USER、 hostPath、 privileges。
権利のエスカレーション:名前空間+RBAC、 Dev/Stage/Prod split、監査。
イメージセキュリティ:CI/CDのスキャン、署名(cosign)、署名による入場。
mTLSとJWT inside (mesh)、 WAF/Rate-limit入力(Ingress/Gateway)。

9)観察可能性およびSLO

メトリクス:Prometheus/OpenTelemetry、 p50/95/99、 4xx/5xx、彩度。
ログ:構造JSON→Loki/Elastic、 PII/PAN/IBANマスキング。
トレース:OTLP→テンポ/イェーガー;'trace_id'はゲートウェイから来ます。
SLO:例:'Deposit p95 ≤ 300 ms、成功≥ 98。5%'、アラートバーンレート。
プロアクティビティ:サービスごと/ルートダッシュボード、DLQウォッチドッグ、キューラグ。

10) CI/CD、ヘルム、GitOps

CI: linters、テスト(単位/契約/統合)、SAST/DAST、 SBOM。

Helm/Jsonnet/Kustomize: 'valuesを持つ宣言チャート。「環境上で」

GitOps (ArgoCD/Flux):シングルソースオブトゥルース、PRマニフェストレビュー、ロールバックボタン。
戦略:青緑、カナリア、影;スキーママイグレーション-expand-and-contract。

値のフラグメント。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:高速ディスクで「低ノイズ」ノードに支払い/ウォレットを分離します。
Tains/Tolerations:クリティカルな負荷に対して保護されたプール。
(Anti-)アフィニティ:ゾーン/ノード(HA)によるスミアレプリカ。
名前空間上のResourceQuota/LimitRange-「ノイズの多い隣人」からの保護。

12)マルチクラスター、マルチリージョン、DR

管轄区域で分割:EU/LatAm/ROWクラスタ;居住データ-ローカル。
GSLB/Anycast入力、クラスごとのオブザビリティおよびアラート。

DRレベル:
  • ウォームスタンバイ(推奨):重要なデータベースのレプリカ、定期的なフェイルオーバーチェック。
  • 読み取り/地域ルーティングのアクティブ化。
  • バックアップ:バックアップ(Velero)、リハーサルの回復。

13) iGaming特異性

支払/財布:p95 ≤ 300-500ミリ秒、個々のプールおよび厳密なPDB;カナリア1→5→10%。
ロビー/コンテンツ:RPS/INPによる攻撃的なHPA、加熱された画像/ベクトルキャッシュ。
ライブゲーム/ストリーム:LC/最小リトレイ、長いソケットタイムアウト、接続に粘着性。
コンプライアンス:厳しいポリシー、KMSによる秘密、Helmリリースの変更の監査を伴うneimspaces。
責任あるゲーム:リミット/ブロッキングサービス-優先トラフィック(フェイルオープン/ポリシーで閉じる)。

14)チェックリスト

サービスをレイアウトする前に

  • マルチステージイメージ、USER非ルート、コサイン署名、スキャン渡された。
  • 外部マネージャからの要求/制限、プローブ、env/シークレット。
  • PDB、 'maxUnavailable ≤ 1'、優雅なシャットダウン。
  • SLO/アラート、ゲートウェイからDBへのトレース。
  • カナリアパターンとロールバックプラン。
  • OPA/Kyvernoポリシーパス(ルートなし、hostPathなし、no: latest)。

クラスタ/プラットフォーム

  • CNIおよびNetworkPolicyが有効になっています。必要に応じてmTLS(メッシュ)。
  • StorageClass/retention、バックアップ/リストアがチェックされました。
  • 構成されるHPA/VPA/KEDA;クラスターオートスケーラー、ウォームプール。
  • RBACは最小限であり、監査は有効であり、秘密はKMSからです。
  • GitOps:リポジトリ内のチャート/マニフェスト、PRレビューが必要です。

15)アンチパターン

'Latest'イメージ、ルートユーザー、厚いベースレイヤー。
「リクエスト/リミット」→立ち退き/スロットリングはありません。
準備=liveness。
statefull/statelessをtaintsなしで同じプールで混合します。
拡張と契約なしのスキーム「正面」の移行。
地域隔離なしで「すべての市場に」唯一のクラスター。
PII/PANでログを記録し、ConfigMapでシークレットを作成します。
PDB/排水の欠如→ピーク時とアップグレード中に破損します。

16)プラットフォームメトリック(最小)

CPU/memリクエスト対allocatable、 pod-churn、 node-pressure。
ネットワーク:ルートごとのp95、 4xx/5xx、リセット/タイムアウト、再試行レート、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、監視/ログ/トレイル、StorageClass。
3.CI/CDとGitOps:ヘルムチャート、水曜日、カナリア/ロールバック、スキーママイグレーション。
4.スケールと回復力:HPA/VPA/KEDA、 PDB、ノードプール、緊張/親和性、DR計画。

最終的なチートシート

薄い、署名された画像+入場ポリシー=セキュリティ基盤。
サンプル、リソース、PDB、 drain=release robustness。
HPA/VPA/KEDA+チューニングプール=ドローダウンのないスケール。
ゲートウェイ/Ingress+mTLS/OPA=セキュアな境界とインターコム。
Observability+SLO+GitOps=Managed Changes。
地域分離とDR=コンプライアンスとフォールトトレランス。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

Telegram
@Gamble_GC
統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。