Files
k3s-gitops/docs/gitops-cicd/04-component-specs-part1.md

653 lines
20 KiB
Markdown
Raw 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.

# FinTech GitOps CI/CD - Технические спецификации компонентов
**Версия:** 1.0
**Дата:** Январь 2026
**Целевая аудитория:** Infrastructure Team, DevOps, System Administrators, Procurement
---
## Содержание
1. [Gitea - Git Repository](#1-gitea)
2. [Jenkins - CI Server](#2-jenkins)
3. [Harbor - Container Registry](#3-harbor)
4. [Docker Swarm Cluster](#4-docker-swarm-cluster)
5. [GitOps Operator](#5-gitops-operator)
6. [Portainer - Management UI](#6-portainer)
7. [Ollama - AI Server](#7-ollama)
8. [MCP Server](#8-mcp-server)
9. [Monitoring Stack](#9-monitoring-stack)
10. [Database Infrastructure](#10-database-infrastructure)
11. [Storage Infrastructure](#11-storage-infrastructure)
12. [Network Infrastructure](#12-network-infrastructure)
13. [Сводная таблица ресурсов](#13-сводная-таблица-ресурсов)
---
## 1. Gitea
### Назначение
Централизованное хранилище кода, конфигураций и базы знаний компании.
### Production спецификация
| Параметр | Значение | Обоснование |
|----------|----------|-------------|
| **CPU** | 8 vCPU | Git операции CPU-intensive при больших репозиториях |
| **RAM** | 16 GB | 8 GB Gitea + 4 GB PostgreSQL + 4 GB OS/cache |
| **Primary Disk** | 500 GB NVMe SSD RAID 1 | Быстрый доступ к Git objects, репликация для HA |
| **Backup Disk** | 2 TB HDD RAID 10 | Долгосрочное хранение всей истории |
| **Network** | 1-10 Gbps | 1 Gbps minimum, 10 Gbps preferred для больших pushes |
| **IOPS** | 5000+ | Множество concurrent операций |
| **IP Address** | 10.10.10.10 | Management VLAN |
### Development спецификация
| Параметр | Значение |
|----------|----------|
| **CPU** | 4 vCPU |
| **RAM** | 8 GB |
| **Disk** | 200 GB SSD |
| **Network** | 1 Gbps |
| **IP Address** | 10.10.10.110 (Dev VLAN) |
### Программное обеспечение
- **OS:** Ubuntu Server 22.04 LTS (hardened)
- **Gitea:** Latest stable (1.21.x+)
- **Database:** PostgreSQL 15.x
- **Web Server:** Nginx (reverse proxy, TLS termination)
- **Дополнительно:** Git LFS, Fail2ban
### Дисковое пространство - расчет
```
Базовая установка:
- Gitea binary: 500 MB
- PostgreSQL database: 2-5 GB (issues, PRs, metadata)
Код и репозитории (пример для средней FinTech):
- 50 активных репозиториев
- Средний размер с историей: 1.5 GB
- Итого: 75 GB
База знаний и документация:
- 1000+ документов Markdown
- Диаграммы, изображения: 5 GB
- Wiki pages: 1 GB
- Итого: 6 GB
Git LFS objects: 20 GB
Backup snapshots: 100 GB
Buffer для роста: 200 GB
TOTAL: ~400 GB минимум
Recommended: 500 GB с запасом
```
### Backup стратегия
- **Hourly:** Incremental Git repositories (только дельта)
- **Daily:** Full PostgreSQL dump в 02:00
- **Weekly:** Full server snapshot
- **Monthly:** Archive backup (7 years retention)
### High Availability
- Master-slave PostgreSQL replication
- Shared storage для Git repositories через NFS/GlusterFS
- Automated failover через keepalived/Pacemaker
- RTO: 15 minutes, RPO: 1 hour
---
## 2. Jenkins
### Назначение
CI автоматизация - сборка, тестирование, security scanning, push образов.
### Production Master спецификация
| Параметр | Значение | Обоснование |
|----------|----------|-------------|
| **CPU** | 16 vCPU | Координация множества параллельных builds |
| **RAM** | 32 GB | JVM heap 24 GB + OS 8 GB |
| **OS Disk** | 200 GB NVMe SSD RAID 1 | Jenkins home, plugins, configs |
| **Workspace Disk** | 1 TB NVMe SSD | Temporary build artifacts |
| **Archive Disk** | 2 TB HDD RAID 10 | Long-term artifact storage |
| **Network** | 10 Gbps | Frequent Docker image push/pull |
| **IOPS** | 10000+ | Parallel builds с интенсивным I/O |
| **IP Address** | 10.10.10.20 | Management VLAN |
### JVM Configuration
```
Heap Size: -Xms16g -Xmx24g
GC: -XX:+UseG1GC
GC Pause: -XX:MaxGCPauseMillis=100
```
### Build Agents (динамические)
| Тип | CPU | RAM | Disk | Назначение |
|-----|-----|-----|------|-----------|
| Light | 2 vCPU | 4 GB | 50 GB | Unit tests, linting |
| Standard | 4 vCPU | 8 GB | 100 GB | Большинство builds |
| Heavy | 8 vCPU | 16 GB | 200 GB | Integration tests, complex apps |
| Docker | 8 vCPU | 16 GB | 200 GB SSD | Docker builds с layer caching |
### Development спецификация
| Параметр | Значение |
|----------|----------|
| **CPU** | 8 vCPU |
| **RAM** | 16 GB (JVM heap 12 GB) |
| **Disk** | 500 GB SSD |
| **Network** | 1 Gbps |
### Программное обеспечение
- **OS:** Ubuntu Server 22.04 LTS
- **Jenkins:** LTS версия (2.440.x+)
- **Java:** OpenJDK 17 LTS
- **Docker:** Docker CE latest (для builds)
### Критические plugins
- Git, Gitea, Pipeline, Docker
- Kubernetes (для dynamic agents)
- Security: OWASP Dependency-Check, SonarQube, Trivy
- Credentials Binding, RBAC
- Slack, Email notifications
- Prometheus Metrics
---
## 3. Harbor
### Назначение
Enterprise container registry с security scanning и image signing.
### Production спецификация
| Параметр | Значение | Обоснование |
|----------|----------|-------------|
| **CPU** | 8 vCPU | Image scanning и replication workload |
| **RAM** | 16 GB | 8 GB Harbor + 4 GB PostgreSQL + 4 GB Redis/cache |
| **Application Disk** | 200 GB SSD RAID 1 | Harbor application и database |
| **Image Storage** | 10 TB HDD RAID 10 | Docker images (grows significantly) |
| **Network** | 10 Gbps | High-frequency image push/pull |
| **IOPS** | 5000+ для SSD | Metadata operations |
| **IP Address** | 10.10.10.30 | Management VLAN |
### Storage расчет
```
Средний Docker image: 500 MB - 2 GB
Количество приложений: 30-50
Версии на app: 10-20 (разные tags)
Growth rate: 50% в год
Пример:
- 40 приложений
- 15 версий каждого
- Средний размер: 1 GB
= 40 * 15 * 1 GB = 600 GB
Плюс:
- Base images (cached): 50 GB
- Third-party images (proxy cache): 200 GB
- Security scan data: 50 GB
- Buffer: 100 GB
TOTAL: ~1 TB минимум
Recommended: 10 TB для long-term growth
```
### Development спецификация
| Параметр | Значение |
|----------|----------|
| **CPU** | 4 vCPU |
| **RAM** | 8 GB |
| **Disk** | 2 TB HDD |
| **Network** | 1 Gbps |
### Программное обеспечение
- **OS:** Ubuntu Server 22.04 LTS
- **Harbor:** Latest stable (2.10.x+)
- **Database:** PostgreSQL 15.x
- **Cache:** Redis 7.x
- **Scanner:** Trivy (встроенный)
- **Storage Backend:** Local filesystem или S3-compatible
### Replication для DR
- Geo-replication к secondary Harbor в DR site
- Automated sync production images
- Push-based replication policy
---
## 4. Docker Swarm Cluster
### Manager Nodes (3 ноды для HA)
| Параметр | Значение | Обоснование |
|----------|----------|-------------|
| **Количество** | 3 | Quorum для Raft consensus (нечетное число) |
| **CPU per node** | 4 vCPU | Orchestration, API, scheduling |
| **RAM per node** | 8 GB | Raft data, cluster state |
| **Disk per node** | 200 GB SSD | Raft log, etcd data |
| **Network** | 10 Gbps | Raft consensus требует low latency |
| **IP Range** | 10.20.1.1-3 | Swarm VLAN |
**Important:** Manager nodes НЕ запускают application workloads (только infrastructure services).
### Worker Nodes (N нод для applications)
| Параметр | Значение | Обоснование |
|----------|----------|-------------|
| **Минимум нод** | 3 | Для redundancy applications |
| **Recommended** | 5-10+ | Зависит от workload |
| **CPU per node** | 8-16 vCPU | Зависит от интенсивности приложений |
| **RAM per node** | 32-64 GB | Зависит от memory footprint приложений |
| **Disk per node** | 500 GB SSD | Local volumes, temporary data |
| **Network** | 10 Gbps | Overlay network performance critical |
| **IP Range** | 10.20.2.1-N | Swarm VLAN |
### Capacity Planning - Worker Nodes
**Расчет на основе workload:**
```
Пример application requirements:
- 30 microservices в production
- Каждый microservice: 3 replicas (для HA)
- Average CPU per replica: 0.5 CPU
- Average RAM per replica: 1 GB
Total requirements:
- CPU: 30 * 3 * 0.5 = 45 CPUs
- RAM: 30 * 3 * 1 GB = 90 GB
С overhead (Swarm, monitoring agents, etc.) +20%:
- CPU: 54 CPUs
- RAM: 108 GB
Распределение на 6 worker nodes:
- CPU per node: 54 / 6 = 9 CPUs → 12 vCPU (с запасом)
- RAM per node: 108 / 6 = 18 GB → 32 GB (с запасом)
Результат: 6 nodes x 12 vCPU x 32 GB RAM
```
### Программное обеспечение
- **OS:** Ubuntu Server 22.04 LTS (kernel 5.15+)
- **Docker:** Docker CE 24.x+
- **Overlay Network:** Encrypted (IPSec default)
---
## 5. GitOps Operator
### Назначение
Автоматическая синхронизация между Git repository и Docker Swarm cluster.
### Спецификация
| Параметр | Значение |
|----------|----------|
| **CPU** | 2 vCPU |
| **RAM** | 4 GB |
| **Disk** | 50 GB SSD |
| **Network** | 1 Gbps |
| **IP Address** | 10.10.10.40 |
### Программное обеспечение
**Варианты реализации:**
- Custom solution (Python/Go script)
- Flux adapted для Swarm
- ArgoCD adapted для Swarm
**Функционал:**
- Git polling каждые 30 секунд
- Detect changes в compose files
- Execute docker stack deploy
- Health checking после deployment
- Rollback при failures
### High Availability
- Active-passive pair
- Heartbeat monitoring
- Automatic failover
---
## 6. Portainer
### Назначение
Web UI для визуального управления и мониторинга Docker Swarm.
### Спецификация
| Параметр | Значение |
|----------|----------|
| **CPU** | 2 vCPU |
| **RAM** | 4 GB |
| **Disk** | 50 GB SSD |
| **Network** | 1 Gbps |
| **IP Address** | 10.10.10.50 |
### Программное обеспечение
- **Portainer:** Business Edition (для RBAC, audit)
- **Database:** PostgreSQL или embedded (small dataset)
- **OS:** Ubuntu Server 22.04 LTS
### Функционал
- Swarm cluster visualization
- Stack management
- Service scaling
- Log viewing
- RBAC для team access
- Templates для быстрого deploy
---
## 7. Ollama - AI Server
### Назначение
Локальный AI model serving для company-wide AI assistant.
### Production спецификация
| Параметр | Значение | Обоснование |
|----------|----------|-------------|
| **CPU** | 16 vCPU | Fallback если нет GPU |
| **RAM** | 64 GB | Large models требуют ~40-60 GB |
| **GPU** | NVIDIA A100 40GB или 2x RTX 4090 24GB | Значительно ускоряет inference |
| **Disk** | 2 TB NVMe SSD | Models 10-100 GB каждая, multiple models |
| **Network** | 10 Gbps | Fast response delivery |
| **IP Address** | 10.30.10.10 | AI VLAN |
### GPU Рекомендации
**Option 1: NVIDIA A100 40GB (Professional)**
- Pros: Лучшая производительность, FP64 support, ECC memory
- Cons: Дорого (~$10-15k)
- Performance: ~10-15 tokens/sec для 70B model
**Option 2: 2x NVIDIA RTX 4090 24GB (Enthusiast)**
- Pros: Дешевле (~$3-4k), хорошая производительность
- Cons: No ECC, gaming card (не для 24/7)
- Performance: ~8-12 tokens/sec для 70B model (distributed)
**Option 3: CPU only (Budget)**
- Pros: No additional hardware
- Cons: Очень медленно (1-2 tokens/sec для 70B)
- Workable: Только для small models (7B-13B)
### Рекомендуемые модели
| Model | Size | RAM Required | Use Case |
|-------|------|--------------|----------|
| **Llama 3.3 70B** | ~40 GB | 48 GB+ | General purpose, сложные задачи |
| **Qwen 2.5 Coder 32B** | ~20 GB | 24 GB+ | Code generation, review |
| **DeepSeek-R1 7B** | ~4 GB | 8 GB+ | Fast responses, simple queries |
| **Mistral 7B** | ~4 GB | 8 GB+ | Легкие задачи, быстрый ответ |
### Development спецификация
| Параметр | Значение |
|----------|----------|
| **CPU** | 8 vCPU |
| **RAM** | 32 GB |
| **GPU** | Optional |
| **Disk** | 500 GB SSD |
| **Network** | 1 Gbps |
### Программное обеспечение
- **OS:** Ubuntu Server 22.04 LTS
- **Ollama:** Latest version
- **CUDA:** 12.x+ (если GPU)
- **Models:** Llama 3, Qwen, DeepSeek, etc.
---
## 8. MCP Server
### Назначение
Model Context Protocol server для интеграции AI с источниками данных.
### Спецификация
| Параметр | Значение |
|----------|----------|
| **CPU** | 8 vCPU |
| **RAM** | 16 GB |
| **Disk** | 100 GB SSD |
| **Network** | 1 Gbps |
| **IP Address** | 10.30.10.20 |
### Connectors (модульные плагины)
| Connector | Target | Access Type |
|-----------|--------|-------------|
| **Gitea MCP** | Gitea API | Read-only (code, docs) |
| **Swarm MCP** | Docker API | Read-only (logs, metrics) |
| **PostgreSQL MCP** | Databases | Read-only (metadata only) |
| **Prometheus MCP** | Prometheus API | Read-only (metrics) |
| **Loki MCP** | Loki API | Read-only (logs) |
### Security
- Service accounts per connector
- Rate limiting
- All queries logged для audit
- No write permissions to production data
### Программное обеспечение
- **OS:** Ubuntu Server 22.04 LTS
- **Runtime:** Node.js или Python
- **MCP Implementation:** TypeScript/Python SDK
---
## 9. Monitoring Stack
### Prometheus
| Параметр | Значение |
|----------|----------|
| **CPU** | 8 vCPU |
| **RAM** | 32 GB |
| **Disk** | 2 TB HDD RAID 10 |
| **Network** | 1 Gbps |
| **IP Address** | 10.40.10.10 |
| **Retention** | 30 days local, long-term в Thanos |
### Grafana
| Параметр | Значение |
|----------|----------|
| **CPU** | 4 vCPU |
| **RAM** | 8 GB |
| **Disk** | 100 GB SSD |
| **Network** | 1 Gbps |
| **IP Address** | 10.40.10.20 |
### Loki
| Параметр | Значение |
|----------|----------|
| **CPU** | 8 vCPU |
| **RAM** | 16 GB |
| **Disk** | 5 TB HDD RAID 10 |
| **Network** | 1 Gbps |
| **IP Address** | 10.40.10.30 |
| **Retention** | 90 days |
### AlertManager
| Параметр | Значение |
|----------|----------|
| **CPU** | 2 vCPU |
| **RAM** | 4 GB |
| **Disk** | 50 GB SSD |
| **Network** | 1 Gbps |
| **IP Address** | 10.40.10.40 |
---
## 10. Database Infrastructure
### Infrastructure PostgreSQL (Gitea, Harbor, Portainer)
**Primary:**
| Параметр | Значение |
|----------|----------|
| **CPU** | 8 vCPU |
| **RAM** | 16 GB |
| **Disk** | 500 GB SSD RAID 10 |
| **Network** | 10 Gbps |
| **IP Address** | 10.50.10.10 |
**Replica:**
| Параметр | Значение |
|----------|----------|
| **CPU** | 8 vCPU |
| **RAM** | 16 GB |
| **Disk** | 500 GB SSD RAID 10 |
| **Network** | 10 Gbps |
| **IP Address** | 10.50.10.11 |
**Configuration:**
- Streaming replication (synchronous)
- Automated failover (Patroni/repmgr)
- Continuous WAL archiving
- Daily full backup + point-in-time recovery
### Application Databases
Varies per application - отдельная спецификация per app.
---
## 11. Storage Infrastructure
### Shared Storage для Swarm Persistent Volumes
**Technology:** GlusterFS (replicated) или NFS с HA
**Спецификация (3 storage nodes для 3-way replication):**
| Параметр | Per Node |
|----------|----------|
| **CPU** | 4 vCPU |
| **RAM** | 16 GB |
| **Disk** | 5 TB HDD RAID 10 |
| **Network** | 10 Gbps (критично для performance) |
| **IP Range** | 10.50.30.1-3 |
**Capacity Planning:**
```
Persistent data estimate:
- Databases: 500 GB
- Application data: 1 TB
- Logs: 500 GB
- Growth: 50% per year
Total: 2 TB current
+ 1 TB growth
+ 1 TB buffer
= 4 TB minimum
With 3-way replication: 4 TB * 3 = 12 TB raw
Recommended: 15 TB (5 TB per node)
```
---
## 12. Network Infrastructure
### Core Network Requirements
**Switches:**
- **Core Switch:** 10 Gbps, Layer 3, VLAN capable
- **Access Switches:** 1 Gbps per port, 10 Gbps uplink
- **Redundancy:** Stacked или MLAG для HA
**Bandwidth Allocations:**
| Zone | Bandwidth | Justification |
|------|-----------|---------------|
| Management | 1-10 Gbps | Harbor push/pull traffic |
| Swarm | 10 Gbps | Overlay network performance |
| AI | 10 Gbps | Model loading, fast responses |
| Monitoring | 1 Gbps | Metrics collection |
| Data | 10 Gbps | Database replication |
| Backup | 10 Gbps | Fast backup completion |
**Firewall:**
- Enterprise firewall appliance
- Throughput: 10 Gbps+
- VLAN routing
- IDS/IPS capabilities
- VPN termination
**VPN Gateway:**
- 1 Gbps throughput minimum
- 100+ concurrent users
- Multi-factor authentication
- Split-tunnel disabled
---
## 13. Сводная таблица ресурсов
### Production Environment - Total Resources
| Component | Quantity | CPU (each) | RAM (each) | Storage (each) | Network |
|-----------|----------|------------|------------|----------------|---------|
| **Gitea** | 1 | 8 | 16 GB | 500 GB SSD + 2 TB HDD | 10G |
| **Jenkins** | 1 | 16 | 32 GB | 200 GB SSD + 1 TB SSD + 2 TB HDD | 10G |
| **Harbor** | 1 | 8 | 16 GB | 200 GB SSD + 10 TB HDD | 10G |
| **Swarm Managers** | 3 | 4 | 8 GB | 200 GB SSD | 10G |
| **Swarm Workers** | 6 | 12 | 32 GB | 500 GB SSD | 10G |
| **GitOps Operator** | 1 | 2 | 4 GB | 50 GB SSD | 1G |
| **Portainer** | 1 | 2 | 4 GB | 50 GB SSD | 1G |
| **Ollama** | 1 | 16 | 64 GB | 2 TB SSD | 10G |
| **MCP Server** | 1 | 8 | 16 GB | 100 GB SSD | 1G |
| **Prometheus** | 1 | 8 | 32 GB | 2 TB HDD | 1G |
| **Grafana** | 1 | 4 | 8 GB | 100 GB SSD | 1G |
| **Loki** | 1 | 8 | 16 GB | 5 TB HDD | 1G |
| **AlertManager** | 1 | 2 | 4 GB | 50 GB SSD | 1G |
| **PostgreSQL Primary** | 1 | 8 | 16 GB | 500 GB SSD | 10G |
| **PostgreSQL Replica** | 1 | 8 | 16 GB | 500 GB SSD | 10G |
| **Storage Nodes** | 3 | 4 | 16 GB | 5 TB HDD | 10G |
| **Backup Server** | 1 | 4 | 8 GB | 20 TB HDD | 10G |
| **---** | **---** | **---** | **---** | **---** | **---** |
| **TOTAL** | **27 servers** | **200 vCPU** | **464 GB RAM** | **~80 TB storage** | - |
### Development Environment - Total Resources
**Масштаб:** Примерно 40% от production
| Total | CPU | RAM | Storage |
|-------|-----|-----|---------|
| **Dev Environment** | 80 vCPU | 180 GB RAM | 25 TB |
### Budget Estimate (Hardware only, approximate)
**Production:**
- Compute servers: $80,000 - $120,000
- Storage: $30,000 - $50,000
- Network equipment: $40,000 - $60,000
- **Total Hardware: $150,000 - $230,000**
**Software Licenses (annual):**
- RHEL subscriptions (if used): $10,000
- Portainer Business: $5,000
- Monitoring tools: $5,000
- **Total Software: $20,000/year**
**Note:** Использование Ubuntu Server (бесплатно) снижает software costs.
---
**Утверждение:**
- Infrastructure Lead: _______________
- Finance: _______________
- CTO: _______________
- Date: _______________