Skip to content

Tổng quan Hạ tầng

BANA sử dụng các Kubernetes cluster riêng biệt cho staging và production trên VNPAY Cloud. Cả hai dùng chung Kustomize base nhưng khác biệt đáng kể về mức độ hoàn thiện kiến trúc.

StagingProduction
Mục đíchKiểm thử nội bộ, demo, môi trường tích hợpLưu lượng thật
Domainsgw.staging.bana.com.vn (API), *.staging.bana.com.vn (frontend)TBD
Node3 (2 default + 1 stateful)7+ (2 system + 3 app + 2 stateful)
Ingressnginx-ingress (đơn lẻ)nginx-ingress (cặp HA)
API GatewayTraefik (đơn lẻ)Traefik (cặp HA)
CDTriển khai thủ công bằng kubectl applyPipeline GitLab CI/CD
SecretSealed SecretsSealed Secrets
TLScert-managercert-manager
Mở rộngThủ côngHPA + PDB + topology spread
Giám sátPrometheus + Grafana + LokiPrometheus + Grafana + Loki + Tempo + OTel

Luồng Lưu lượng

Kiến trúc phân tách edge ingress (nginx-ingress) khỏi API gateway (Traefik). Traefik không phải là ingress controller — nó là API gateway phía backend với rate limiting, circuit breaking, và security header.

Nguyên tắc Thiết kế

Nguyên tắcQuyết địnhLý do
Cluster riêng biệtStaging + ProductionKhông ảnh hưởng lẫn nhau, mở rộng độc lập
Edge vs Gatewaynginx-ingress (edge) + Traefik (API gateway)Phân tách trách nhiệm — TLS/tĩnh vs API middleware
CI/CDGitLab CI/CD + GitLab Container RegistryTeam đã sử dụng GitLab
TLScert-manager với Let's EncryptTự động gia hạn, không cần quản lý chứng chỉ thủ công
Cấu hìnhKustomize overlayCùng base, overlay khác nhau cho từng môi trường
SecretSealed SecretsMã hóa trong Git, không phụ thuộc bên ngoài
Identity-firstInit container chờ identityTất cả VerifierApp cần JWKS từ IssuerApp
MigrationK8s Job trước deploymentTách biệt khỏi runtime, idempotent
Payment tách nhỏ2 Deployment từ 1 imageapi, worker qua biến môi trường APP_MODE
Signal dual-routeREST có middleware, WebSocket không cóKhông rate-limit trên kết nối persistent

Cấu trúc Tài liệu

TrangMô tả
Multi-Tenancy (PRD)Các mức cô lập tenant (Pool / Bridge / Silo) và chiến lược di chuyển tenant
Quyết địnhADR hạ tầng cross-cutting
Thiết kế ClusterNode pool, namespace — staging vs production
WorkloadMọi thông số Deployment/StatefulSet
Mạngnginx-ingress + Traefik API gateway, TLS, routing
Tầng Dữ liệuPostgreSQL, Redis, Kafka, Typesense
Cấu hìnhConfigMap, Secret, ánh xạ biến môi trường
Quan sátPrometheus, Grafana, Loki, Tempo, OpenTelemetry
Bảo mật & Gia cốBảo mật pod, RBAC, chuỗi cung ứng image, PriorityClass
Vận hànhGitLab CI/CD, migration, quy trình triển khai

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.