Update docs/gitops-cicd/test-server-requirements.md

This commit is contained in:
2026-01-13 08:51:43 +00:00
parent e7657db02d
commit a8a987aa7b

View File

@@ -0,0 +1,531 @@
# Требования к тестовому серверу GitOps CI/CD
**Версия:** 1.0
**Дата:** Январь 2026
**Целевая аудитория:** Отделы инфраструктуры, безопасности, закупок
---
## Содержание
1. [Обзор и назначение](#1-обзор-и-назначение)
2. [Структурные схемы](#2-структурные-схемы)
3. [Варианты реализации](#3-варианты-реализации)
4. [Детальные технические требования](#4-детальные-технические-требования)
5. [Сетевая инфраструктура](#5-сетевая-инфраструктура)
6. [Хранилище данных](#6-хранилище-данных)
7. [Безопасность](#7-безопасность)
8. [Бюджетные расчеты](#8-бюджетные-расчеты)
9. [План закупок](#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
---