From 116958933ec8e998f03f0b7a76f6f4f2ab0bc5d9 Mon Sep 17 00:00:00 2001 From: Claude AI Date: Mon, 12 Jan 2026 13:05:40 +0000 Subject: [PATCH] docs: complete comprehensive component specifications document --- docs/gitops-cicd/04-component-specs-part1.md | 660 ++++++++++++++++++- 1 file changed, 639 insertions(+), 21 deletions(-) diff --git a/docs/gitops-cicd/04-component-specs-part1.md b/docs/gitops-cicd/04-component-specs-part1.md index 4819935..8bb7cef 100644 --- a/docs/gitops-cicd/04-component-specs-part1.md +++ b/docs/gitops-cicd/04-component-specs-part1.md @@ -1,35 +1,653 @@ -# FinTech GitOps CI/CD - Технические спецификации компонентов (Часть 1) +# FinTech GitOps CI/CD - Технические спецификации компонентов **Версия:** 1.0 **Дата:** Январь 2026 -**Целевая аудитория:** Infrastructure Team, DevOps, System Administrators +**Целевая аудитория:** Infrastructure Team, DevOps, System Administrators, Procurement --- -## Содержание Части 1 +## Содержание -1. [Gitea - Git Repository & Knowledge Base](#1-gitea---git-repository--knowledge-base) -2. [Jenkins - CI Automation Server](#2-jenkins---ci-automation-server) -3. [Harbor - Enterprise Container Registry](#3-harbor---enterprise-container-registry) +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 - Git Repository & Knowledge Base +## 1. Gitea -### 1.1 Назначение и роль +### Назначение +Централизованное хранилище кода, конфигураций и базы знаний компании. -**Основные функции:** -- Централизованное хранилище исходного кода всех приложений -- База знаний компании через Wiki и Markdown documentation -- Version control для Infrastructure as Code -- Code review platform через Pull Requests -- Webhook integration для CI/CD automation -- Issue tracking для технических задач +### Production спецификация -**Критичность:** HIGH -- Без Gitea невозможна разработка -- Single source of truth для всех конфигураций -- Необходим для CI/CD pipeline -- Содержит всю корпоративную документацию +| Параметр | Значение | Обоснование | +|----------|----------|-------------| +| **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 | -### \ No newline at end of file +### 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: _______________ \ No newline at end of file