35 KiB
Требования к тестовому серверу GitOps CI/CD
Версия: 1.0
Дата: Январь 2026
Целевая аудитория: Отделы инфраструктуры, безопасности, закупок
Содержание
- Обзор и назначение
- Структурные схемы
- Варианты реализации
- Детальные технические требования
- Сетевая инфраструктура
- Хранилище данных
- Безопасность
- Бюджетные расчеты
- План закупок
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