Files
k3s-gitops/docs/gitops-cicd/test-server-requirements.md

35 KiB
Raw Blame History

Требования к тестовому серверу GitOps CI/CD

Версия: 1.0
Дата: Январь 2026
Целевая аудитория: Отделы инфраструктуры, безопасности, закупок


Содержание

  1. Обзор и назначение
  2. Структурные схемы
  3. Варианты реализации
  4. Детальные технические требования
  5. Сетевая инфраструктура
  6. Хранилище данных
  7. Безопасность
  8. Бюджетные расчеты
  9. План закупок

1. Обзор и назначение

1.1 Зачем нужен тестовый сервер

Тестовый (Development) сервер является критически важным этапом внедрения GitOps CI/CD в FinTech компании по следующим причинам:

Снижение рисков:

  • Тестирование новой инфраструктуры без влияния на production
  • Выявление проблем на ранних стадиях
  • Валидация security политик в безопасной среде
  • Отработка disaster recovery процедур

Обучение команды:

  • Практический опыт работы с новыми инструментами
  • Hands-on тренинг на реальной инфраструктуре
  • Создание runbooks и документации
  • Onboarding новых сотрудников

Оптимизация архитектуры:

  • Проверка capacity planning расчетов
  • Выявление bottlenecks производительности
  • Тюнинг конфигураций
  • Корректировка требований для production

Финансовая обоснованность:

  • Меньший initial investment (~40% от production)
  • Возможность корректировки решений до major закупок
  • Proof of concept для stakeholders
  • ROI демонстрация перед full rollout

1.2 Ключевые отличия от production

Параметр Production Test/Dev Обоснование
Масштаб Full scale 40% scale Достаточно для testing
HA Full redundancy Simplified Downtime acceptable
Данные Real production Synthetic/mock Безопасность данных
SLA 99.9% uptime Best effort Не критично для dev
Access Restricted More open Удобство для dev team
Cost $518K ~$100K Budget-friendly PoC

2. Структурные схемы

2.1 Общая архитектура тестового окружения

┌─────────────────────────────────────────────────────────────────────────┐
│                      TEST/DEV ENVIRONMENT                                │
│                    VLAN 100: 10.100.0.0/16                               │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────┐   │
│  │                    EXTERNAL ACCESS                              │   │
│  │                                                                  │   │
│  │   ┌──────────────────────────────────────────────────────┐    │   │
│  │   │  Corporate VPN (shared с production)                  │    │   │
│  │   │  • Доступ для dev team                               │    │   │
│  │   │  • MFA опционально (можно без для dev)               │    │   │
│  │   │  • IP: 10.100.1.1                                    │    │   │
│  │   └──────────────────────────────────────────────────────┘    │   │
│  │                              │                                  │   │
│  │                              ▼                                  │   │
│  │   ┌──────────────────────────────────────────────────────┐    │   │
│  │   │  Jump Host (опционально для dev)                     │    │   │
│  │   │  • Можно direct access для удобства                  │    │   │
│  │   │  IP: 10.100.1.10                                     │    │   │
│  │   └──────────────────────────────────────────────────────┘    │   │
│  └────────────────────────────────────────────────────────────────┘   │
│                              │                                          │
│  ════════════════════════════════════════════════════════════════════ │
│                              │                                          │
│  ┌────────────────────────────▼──────────────────────────────────┐   │
│  │              MANAGEMENT ZONE (10.100.10.0/24)                  │   │
│  │                                                                 │   │
│  │  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐        │   │
│  │  │   Gitea      │  │   Jenkins    │  │   Harbor     │        │   │
│  │  │              │  │              │  │              │        │   │
│  │  │ 4 vCPU       │  │ 8 vCPU       │  │ 4 vCPU       │        │   │
│  │  │ 8 GB RAM     │  │ 16 GB RAM    │  │ 8 GB RAM     │        │   │
│  │  │ 200 GB SSD   │  │ 500 GB SSD   │  │ 2 TB HDD     │        │   │
│  │  │              │  │              │  │              │        │   │
│  │  │ .10.10       │  │ .10.20       │  │ .10.30       │        │   │
│  │  └──────────────┘  └──────────────┘  └──────────────┘        │   │
│  │                                                                 │   │
│  │  ┌──────────────┐  ┌──────────────────────────────┐          │   │
│  │  │  GitOps Ops  │  │     Portainer                │          │   │
│  │  │              │  │                              │          │   │
│  │  │ 2 vCPU       │  │ Combined на одной VM:        │          │   │
│  │  │ 4 GB RAM     │  │ GitOps Operator + Portainer  │          │   │
│  │  │ 50 GB SSD    │  │                              │          │   │
│  │  │              │  │                              │          │   │
│  │  │ .10.40       │  │ .10.50                       │          │   │
│  │  └──────────────┘  └──────────────────────────────┘          │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                              │                                        │
│  ════════════════════════════════════════════════════════════════════│
│                              │                                        │
│  ┌────────────────────────────▼──────────────────────────────────┐  │
│  │         DOCKER SWARM ZONE (10.100.20.0/24)                     │  │
│  │                                                                 │  │
│  │  ┌─────────────────────────────────────────────────────┐      │  │
│  │  │  MANAGER NODE (single для dev - упрощение)          │      │  │
│  │  │                                                      │      │  │
│  │  │  ┌──────────────────────────────────────┐          │      │  │
│  │  │  │  Swarm Manager                        │          │      │  │
│  │  │  │  • Orchestration                      │          │      │  │
│  │  │  │  • API endpoint                       │          │      │  │
│  │  │  │  • Scheduling                         │          │      │  │
│  │  │  │                                       │          │      │  │
│  │  │  │  4 vCPU, 8 GB RAM, 100 GB SSD        │          │      │  │
│  │  │  │  IP: 10.100.20.1                     │          │      │  │
│  │  │  └──────────────────────────────────────┘          │      │  │
│  │  └─────────────────────────────────────────────────────┘      │  │
│  │                                                                 │  │
│  │  ┌─────────────────────────────────────────────────────┐      │  │
│  │  │  WORKER NODES (3 ноды - достаточно для HA test)     │      │  │
│  │  │                                                      │      │  │
│  │  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐  │      │  │
│  │  │  │  Worker 1   │ │  Worker 2   │ │  Worker 3   │  │      │  │
│  │  │  │             │ │             │ │             │  │      │  │
│  │  │  │  8 vCPU     │ │  8 vCPU     │ │  8 vCPU     │  │      │  │
│  │  │  │  16 GB RAM  │ │  16 GB RAM  │ │  16 GB RAM  │  │      │  │
│  │  │  │  200 GB SSD │ │  200 GB SSD │ │  200 GB SSD │  │      │  │
│  │  │  │             │ │             │ │             │  │      │  │
│  │  │  │  .20.2      │ │  .20.3      │ │  .20.4      │  │      │  │
│  │  │  └─────────────┘ └─────────────┘ └─────────────┘  │      │  │
│  │  │                                                      │      │  │
│  │  │  • Application containers                           │      │  │
│  │  │  • Overlay network                                  │      │  │
│  │  │  • Service tasks                                    │      │  │
│  │  └─────────────────────────────────────────────────────┘      │  │
│  └─────────────────────────────────────────────────────────────┘  │
│                              │                                      │
│  ════════════════════════════════════════════════════════════════  │
│                              │                                      │
│  ┌────────────────────────────▼──────────────────────────────────┐│
│  │              AI ZONE (10.100.30.0/24)                          ││
│  │                                                                 ││
│  │  ┌──────────────────────────────────────────────────┐         ││
│  │  │  Ollama AI Server                                 │         ││
│  │  │  • Llama 3.3 70B (или меньшая модель для dev)    │         ││
│  │  │  • Qwen 2.5 Coder                                │         ││
│  │  │  • DeepSeek R1 (опционально)                    │         ││
│  │  │                                                   │         ││
│  │  │  8 vCPU, 32 GB RAM, 500 GB SSD                   │         ││
│  │  │  IP: 10.100.30.10                                │         ││
│  │  │  GPU: Опционально (можно без GPU в dev)          │         ││
│  │  └──────────────────────────────────────────────────┘         ││
│  │                              │                                  ││
│  │                              ▼                                  ││
│  │  ┌──────────────────────────────────────────────────┐         ││
│  │  │  MCP Server                                       │         ││
│  │  │  • Gitea connector                               │         ││
│  │  │  • Docker Swarm connector                        │         ││
│  │  │  • Database connector                            │         ││
│  │  │  • Prometheus connector                          │         ││
│  │  │                                                   │         ││
│  │  │  4 vCPU, 8 GB RAM, 50 GB SSD                     │         ││
│  │  │  IP: 10.100.30.20                                │         ││
│  │  └──────────────────────────────────────────────────┘         ││
│  └─────────────────────────────────────────────────────────────┘││
│                              │                                     ││
│  ════════════════════════════════════════════════════════════════││
│                              │                                     ││
│  ┌────────────────────────────▼──────────────────────────────────┐│
│  │         MONITORING ZONE (10.100.40.0/24)                       │
│  │                                                                 │
│  │  ┌─────────────────────────────────────────────────────┐      │
│  │  │  Combined Monitoring Stack (на одной VM)            │      │
│  │  │                                                      │      │
│  │  │  • Prometheus (metrics)                             │      │
│  │  │  • Grafana (visualization)                          │      │
│  │  │  • Loki (logs)                                      │      │
│  │  │  • AlertManager (alerts)                            │      │
│  │  │                                                      │      │
│  │  │  8 vCPU, 16 GB RAM, 1 TB HDD                        │      │
│  │  │  IP: 10.100.40.10                                   │      │
│  │  └─────────────────────────────────────────────────────┘      │
│  └─────────────────────────────────────────────────────────────┘
│                              │                                     
│  ════════════════════════════════════════════════════════════════
│                              │                                     
│  ┌────────────────────────────▼──────────────────────────────────┐
│  │            DATA ZONE (10.100.50.0/24)                          │
│  │                                                                 │
│  │  ┌──────────────────────────────────────────────────┐         │
│  │  │  PostgreSQL Server                                │         │
│  │  │  • Все dev databases на одном сервере            │         │
│  │  │  • Gitea DB                                      │         │
│  │  │  • Harbor DB                                     │         │
│  │  │  • Portainer DB                                  │         │
│  │  │  • Application test DBs                          │         │
│  │  │                                                   │         │
│  │  │  4 vCPU, 8 GB RAM, 200 GB SSD                    │         │
│  │  │  IP: 10.100.50.10                                │         │
│  │  │  No replication в dev (упрощение)                │         │
│  │  └──────────────────────────────────────────────────┘         │
│  │                                                                 │
│  │  ┌──────────────────────────────────────────────────┐         │
│  │  │  NFS Storage Server                               │         │
│  │  │  • Persistent volumes для Swarm                  │         │
│  │  │  • Backup storage                                │         │
│  │  │  • Harbor image storage                          │         │
│  │  │                                                   │         │
│  │  │  2 vCPU, 8 GB RAM, 5 TB HDD RAID 10              │         │
│  │  │  IP: 10.100.50.20                                │         │
│  │  └──────────────────────────────────────────────────┘         │
│  └─────────────────────────────────────────────────────────────┘
└─────────────────────────────────────────────────────────────────────────┘

ИТОГО: 12 VM / 72 vCPU / 168 GB RAM / ~10 TB Storage

2.2 Сетевая топология

                         Internet/Corporate Network
                                    │
                                    │
                         ┌──────────▼──────────┐
                         │   Firewall/Router   │
                         │   + VPN Gateway     │
                         └──────────┬──────────┘
                                    │
                 ┌──────────────────┼──────────────────┐
                 │                  │                  │
          ┌──────▼──────┐    ┌─────▼──────┐   ┌──────▼──────┐
          │ Production  │    │  Dev/Test  │   │   Other     │
          │   VLANs     │    │   VLAN 100 │   │   Networks  │
          │ 10.10.x.x   │    │ 10.100.x.x │   │             │
          └─────────────┘    └────────────┘   └─────────────┘
                                    │
                    ┌───────────────┼───────────────┐
                    │               │               │
            ┌───────▼──────┐ ┌─────▼─────┐ ┌──────▼──────┐
            │ Management   │ │  Swarm    │ │  AI/Monitor │
            │ 10.100.10/24 │ │10.100.20/24│ │10.100.30-40 │
            │              │ │           │ │  /24        │
            │ • Gitea      │ │ • Manager │ │ • Ollama    │
            │ • Jenkins    │ │ • Workers │ │ • MCP       │
            │ • Harbor     │ │           │ │ • Prometheus│
            │ • Portainer  │ │           │ │ • Grafana   │
            └──────────────┘ └───────────┘ └─────────────┘
                    │               │               │
                    └───────────────┼───────────────┘
                                    │
                            ┌───────▼───────┐
                            │  Data Zone    │
                            │ 10.100.50/24  │
                            │               │
                            │ • PostgreSQL  │
                            │ • NFS Storage │
                            └───────────────┘

Firewall Rules (Simplified для Dev):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• VPN → All Dev VLANs: ALLOW (SSH, HTTPS, Custom ports)
• Management → Swarm: ALLOW (2377, 7946, 4789)
• Management → Data: ALLOW (5432 PostgreSQL, 2049 NFS)
• Swarm → Management: ALLOW (443 Harbor, 80/443 Gitea)
• All → Monitoring: ALLOW (metrics collection)
• AI → All: READ-ONLY через MCP
• Dev VLANs → Production VLANs: DENY (isolation)

2.3 Data Flow диаграмма

┌─────────────┐
│  Developer  │
│  Workstation│
└──────┬──────┘
       │ 1. Git push
       ▼
┌─────────────────┐
│     Gitea       │ ◄────── База знаний, документация
│  10.100.10.10   │
└──────┬──────────┘
       │ 2. Webhook trigger
       ▼
┌─────────────────┐
│    Jenkins      │
│  10.100.10.20   │
│                 │
│ ┌─────────────┐ │
│ │ CI Pipeline │ │
│ │ • Build     │ │
│ │ • Test      │ │
│ │ • Security  │ │
│ │ • Scan      │ │
│ └─────────────┘ │
└──────┬──────────┘
       │ 3. Docker push
       ▼
┌─────────────────┐
│     Harbor      │
│  10.100.10.30   │
│ Container Reg   │
└──────┬──────────┘
       │ 4. Update compose
       ▼
┌─────────────────┐
│     Gitea       │
│  (GitOps repo)  │
└──────┬──────────┘
       │ 5. Git pull
       ▼
┌─────────────────┐
│ GitOps Operator │
│  10.100.10.40   │
└──────┬──────────┘
       │ 6. Stack deploy
       ▼
┌─────────────────────────────────┐
│      Docker Swarm Cluster       │
│                                 │
│  Manager         Workers        │
│  10.100.20.1     10.100.20.2-4  │
│                                 │
│  ┌──────────┐  ┌──────────┐   │
│  │ Service  │  │ Service  │   │
│  │    A     │  │    B     │   │
│  └──────────┘  └──────────┘   │
└─────────────────────────────────┘
       │
       │ 7. Metrics & Logs
       ▼
┌─────────────────────────────────┐
│     Monitoring Stack            │
│     10.100.40.10                │
│                                 │
│  Prometheus → Grafana           │
│  Loki → Dashboards              │
└─────────────────────────────────┘
       │
       │ 8. AI Analysis
       ▼
┌─────────────────────────────────┐
│         AI Stack                │
│                                 │
│  ┌────────────┐  ┌───────────┐ │
│  │   Ollama   │←→│MCP Server │ │
│  │ 10.100.30.10  │10.100.30.20│ │
│  └────────────┘  └─────┬─────┘ │
└────────────────────────┼───────┘
                         │
         ┌───────────────┼───────────────┐
         │               │               │
    ┌────▼────┐     ┌────▼────┐    ┌────▼────┐
    │  Gitea  │     │ Swarm   │    │  Logs   │
    │  Docs   │     │  API    │    │Metrics  │
    └─────────┘     └─────────┘    └─────────┘

3. Варианты реализации

3.1 Вариант A: Отдельные виртуальные машины (Рекомендуется)

Описание:
Каждый компонент развернут на dedicated VM. Это наиболее гибкий и production-like подход.

Преимущества:

  • Maximum flexibility при масштабировании
  • Resource isolation между компонентами
  • Easier troubleshooting
  • Более похоже на production setup
  • Можно selective upgrade компонентов

Недостатки:

  • Больше overhead (каждая VM = OS)
  • Сложнее management (12 VMs)
  • Выше licensing costs (если Windows/RHEL)

Технические требования:

# Component vCPU RAM Storage Network OS
1 Gitea 4 8 GB 200 GB SSD 1 Gbps Ubuntu 22.04
2 Jenkins 8 16 GB 500 GB SSD 1 Gbps Ubuntu 22.04
3 Harbor 4 8 GB 2 TB HDD 1 Gbps Ubuntu 22.04
4 Swarm Manager 4 8 GB 100 GB SSD 1 Gbps Ubuntu 22.04
5-7 Swarm Workers 8 each 16 GB each 200 GB SSD each 1 Gbps Ubuntu 22.04
8 GitOps/Portainer 2 4 GB 50 GB SSD 1 Gbps Ubuntu 22.04
9 Ollama 8 32 GB 500 GB SSD 1 Gbps Ubuntu 22.04
10 MCP Server 4 8 GB 50 GB SSD 1 Gbps Ubuntu 22.04
11 Monitoring 8 16 GB 1 TB HDD 1 Gbps Ubuntu 22.04
12 PostgreSQL 4 8 GB 200 GB SSD 1 Gbps Ubuntu 22.04
13 NFS Storage 2 8 GB 5 TB HDD RAID 10 1 Gbps Ubuntu 22.04

ИТОГО:

  • VMs: 13
  • vCPU: 72 total
  • RAM: 168 GB total
  • SSD: ~2.6 TB
  • HDD: ~8 TB
  • Network: 13x 1 Gbps ports

Минимальный hypervisor host:

  • CPU: 2x Intel Xeon или AMD EPYC (минимум 96 threads с учетом oversubscription 1:1.3)
  • RAM: 256 GB (168 GB для VMs + 88 GB для hypervisor и overhead)
  • Storage: 2x 2TB NVMe SSD (RAID 1) + 2x 8TB HDD (RAID 10)
  • Network: 2x 10 Gbps (bonded для redundancy)

3.2 Вариант B: Single Powerful Server (Budget Option)

Описание:
Все компоненты на одном мощном сервере как VMs или containers. Подходит для tight budget.

Преимущества:

  • Значительная экономия costs (~60% дешевле)
  • Проще management (один сервер)
  • Lower power consumption
  • Меньше физического space
  • Быстрее deployment

Недостатки:

  • Single point of failure
  • Limited scalability
  • Resource contention возможна
  • Не production-like architecture

Технические требования:

Single Server Specifications:

Component Specification Примечание
CPU 2x Intel Xeon Gold 6348 (28 cores, 56 threads each) = 112 threads total Или эквивалент AMD EPYC
RAM 256 GB DDR4 ECC (8x 32GB modules) Расширяемо до 512 GB
Storage 1 2x 2TB NVMe SSD в RAID 1 Для OS, VMs, databases
Storage 2 4x 8TB HDD в RAID 10 = 16 TB usable Для Harbor images, backups
Storage Controller Hardware RAID controller с BBU Для integrity
Network 2x 10 Gbps (bonded) Redundancy
PSU 2x Redundant Power Supplies High availability
Management iDRAC/iLO/IPMI Remote management
Form Factor 2U Rackmount Standard datacenter

Примеры подходящих серверов:

  • Dell PowerEdge R750
  • HPE ProLiant DL380 Gen11
  • Supermicro SuperServer SYS-2029U-TN24R4T
  • Lenovo ThinkSystem SR650 V3

Software Stack:

  • Hypervisor: Proxmox VE (free) или VMware ESXi (с лицензией)
  • VMs: Ubuntu 22.04 LTS для каждого компонента
  • Management: Proxmox Web UI или vCenter

Estimated Cost: ~$35,000-45,000 (vs $70,000-90,000 для отдельных серверов)

3.3 Вариант C: Hybrid Approach (Оптимальный компромисс)

Описание:
Комбинация: critical компоненты отдельно, non-critical объединены.

Архитектура:

Physical Server Components Resources
Server 1: CI/CD Hub Gitea, Jenkins, Harbor, GitOps 32 vCPU, 64 GB RAM, 3 TB storage
Server 2: Swarm Cluster 1 Manager + 3 Workers (VMs) 32 vCPU, 64 GB RAM, 1 TB SSD
Server 3: AI & Monitoring Ollama, MCP, Prometheus, Grafana 16 vCPU, 48 GB RAM, 2 TB storage
Server 4: Data Layer PostgreSQL, NFS Storage 8 vCPU, 16 GB RAM, 6 TB storage

ИТОГО:

  • Servers: 4 physical
  • Total: 88 vCPU, 192 GB RAM, 12 TB storage
  • Cost: ~$55,000-65,000

Преимущества:

  • Баланс cost vs flexibility
  • Some isolation между critical services
  • Можно upgrade отдельные servers
  • Reasonable failover возможности

Рекомендация: Этот вариант для большинства FinTech компаний.


4. Детальные технические требования

4.1 Сводная таблица ресурсов

Component vCPU RAM (GB) SSD (GB) HDD (TB) Network
Gitea 4 8 200 - 1 Gbps
Jenkins 8 16 500 - 1 Gbps
Harbor 4 8 100 2 1 Gbps
Swarm Manager 4 8 100 - 1 Gbps
Swarm Workers (3x) 24 48 600 - 1 Gbps
GitOps/Portainer 2 4 50 - 1 Gbps
Ollama 8 32 500 - 1 Gbps
MCP Server 4 8 50 - 1 Gbps
Monitoring 8 16 - 1 1 Gbps
PostgreSQL 4 8 200 - 1 Gbps
NFS Storage 2 8 50 5 1 Gbps
TOTAL 72 168 ~2350 ~8 11 ports

Hypervisor Requirements:

  • Physical CPU: 96 threads (with 1:1.3 oversubscription)
  • Physical RAM: 256 GB (168 + overhead)
  • Storage: 3 TB SSD + 10 TB HDD
  • Network: 2x 10 Gbps bonded