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

532 lines
35 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Требования к тестовому серверу 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
---