G-SERVICE Docs
Архитектура ISP (OSS/BSS)

Kubernetes-архитектура

Helm-чарт ISP Platform — DRY defaults, 11 приложений, конфигурация по окружениям

Обзор

Единый Helm-чарт (infra/chart/) для staging и production (ArgoCD). В dev приложения запускаются нативно через bun dev / go run.

Ключевые принципы:

  • DRY defaults — общая конфигурация в defaults:, приложения только переопределяют нужное
  • range over apps — шаблоны итерируют по apps map, нет дублирования при добавлении приложений
  • merge в helpersmustMergeOverwrite(defaults, app) объединяет конфиг автоматически
  • healthPath / readyPath — каждое приложение может задать свои пути для проб

Приложения (11 deployments)

ПриложениеОбразПортСтекHealth Path
docsisp-platform/docs3000Next.js/
webisp-platform/web3000Next.js/
customer-coreisp-platform/customer-core3010NestJS/healthz
product-catalogisp-platform/product-catalog3011NestJS/healthz
billingisp-platform/billing3012NestJS/healthz
notificationisp-platform/notification3013NestJS/healthz
omsisp-platform/oms3014NestJS/healthz
network-inventoryisp-platform/network-inventory3015NestJS/healthz
provisioning-goisp-platform/provisioning-go8080Go/healthz
aaa-goisp-platform/aaa-go8081Go/healthz
mediation-goisp-platform/mediation-go8082Go/healthz

Helm values.yaml (структура)

defaults:
  image:
    pullPolicy: IfNotPresent
  replicas: 1
  port: 3000
  healthPath: /api/health # NestJS default
  readyPath: /api/health
  resources:
    requests: { cpu: 50m, memory: 128Mi }
    limits: { cpu: 500m, memory: 512Mi }

apps:
  # --- Frontend ---
  docs:
    image: { repository: isp-platform/docs, tag: latest }
  web:
    image: { repository: isp-platform/web, tag: latest }

  # --- BSS (NestJS) ---
  customer-core:
    image: { repository: isp-platform/customer-core, tag: latest }
    port: 3010
  product-catalog:
    image: { repository: isp-platform/product-catalog, tag: latest }
    port: 3011
  billing:
    image: { repository: isp-platform/billing, tag: latest }
    port: 3012
  notification:
    image: { repository: isp-platform/notification, tag: latest }
    port: 3013
  oms:
    image: { repository: isp-platform/oms, tag: latest }
    port: 3014
  network-inventory:
    image: { repository: isp-platform/network-inventory, tag: latest }
    port: 3015

  # --- OSS (Go) ---
  provisioning-go:
    image: { repository: isp-platform/provisioning-go, tag: latest }
    port: 8080
    healthPath: /healthz
    readyPath: /readyz
  aaa-go:
    image: { repository: isp-platform/aaa-go, tag: latest }
    port: 8081
    healthPath: /healthz
    readyPath: /readyz
  mediation-go:
    image: { repository: isp-platform/mediation-go, tag: latest }
    port: 8082
    healthPath: /healthz
    readyPath: /readyz

Production overrides (values.production.yaml)

apps:
  # Go-сервисы — меньше памяти (distroless, ~10MB binary)
  provisioning-go:
    resources:
      requests: { cpu: 100m, memory: 64Mi }
      limits: { cpu: 500m, memory: 256Mi }
  aaa-go:
    resources:
      requests: { cpu: 100m, memory: 64Mi }
      limits: { cpu: 500m, memory: 256Mi }
  mediation-go:
    resources:
      requests: { cpu: 200m, memory: 128Mi }
      limits: { cpu: 1000m, memory: 512Mi }

  # NestJS-сервисы — стандартные ресурсы
  billing:
    resources:
      requests: { cpu: 200m, memory: 256Mi }
      limits: { cpu: 1000m, memory: 1Gi }

Компоненты

КомпонентDevProduction
SecurityContextpod: runAsNonRoot, container: drop ALL
Probesoffstartup + readiness + liveness
HPAoff2–20 реплик, CPU 70%
PDBoffminAvailable: 1
NetworkPolicyoffingress-nginx only, egress DNS + external
TopologySpreadmaxSkew: 1 по hostname
Ingress— (apps via bun dev)nginx + cert-manager TLS

Конфигурация по окружениям

DevStagingProduction
Replicas12HPA 2–20
Resources CPU50m–2100m–500m200m–1
Resources Memory128Mi–2Gi256Mi–512Mi512Mi–1Gi
NODE_ENVdevelopmentproductionproduction
TLSstaging issuerprod issuer

Команды

helm template isp infra/chart/                                  # dry-run (default values)
helm template isp infra/chart/ -f infra/chart/values.production.yaml  # production dry-run

helm upgrade --install isp infra/chart \
  -f infra/chart/values.production.yaml \
  -n isp-platform --create-namespace                            # manual install

On this page