310 lines
5.5 KiB
Markdown
310 lines
5.5 KiB
Markdown
# Требования к серверу и архитектуре Self-hosted Ollama для DevOps - Kubernetes - Knowledge Base
|
||
|
||
|
||
|
||
### 1. Цели и назначение системы
|
||
|
||
Система предназначена для:
|
||
|
||
- Анализа **Kubernetes-кластеров** (YAML, manifests, events, states)
|
||
|
||
- Анализа **логов** (application / infra / CI)
|
||
|
||
- Работы с **технической документацией** (Markdown, PDF, AsciiDoc)
|
||
|
||
- Написания и ревью **кода** (Bash, Go, Python, Terraform, Helm)
|
||
|
||
- Создания **внутренней базы знаний** (RAG)
|
||
|
||
- Одновременной работы **до 10 пользователей**
|
||
|
||
- Интеграции с **MCP-сервисами** для получения данных из:
|
||
|
||
- Gitea
|
||
|
||
- Docker Swarm
|
||
|
||
- Kubernetes API
|
||
|
||
- CI/CD и лог-хранилищ
|
||
|
||
|
||
---
|
||
|
||
## 2. Архитектура (High Level)
|
||
|
||
```
|
||
Users (Web UI / IDE)
|
||
|
|
||
v
|
||
API Gateway / Reverse Proxy
|
||
|
|
||
v
|
||
Ollama Server (LLM inference)
|
||
|
|
||
+--> MCP: Gitea
|
||
|
|
||
+--> MCP: Docker Swarm
|
||
|
|
||
+--> MCP: Kubernetes
|
||
|
|
||
+--> MCP: Logs / Docs
|
||
|
|
||
v
|
||
Vector DB (Knowledge Base / RAG)
|
||
```
|
||
|
||
---
|
||
![[ollama_architecture.png]]
|
||
|
||
## 3. Серверные требования (Hardware)
|
||
|
||
### 3.1 Минимальная конфигурация (рекомендуемая)
|
||
|
||
|Компонент|Требование|
|
||
|---|---|
|
||
|CPU|16–32 vCPU (x86_64)|
|
||
|RAM|**128 GB** (минимум 64 GB)|
|
||
|GPU|**1× NVIDIA 24–48 GB VRAM** (A5000 / A6000 / L40 / RTX 4090)|
|
||
|Disk (NVMe)|2–4 TB|
|
||
|Disk IOPS|≥ 100k|
|
||
|Network|10 Gbps (желательно)|
|
||
|OS|Ubuntu Server 22.04 LTS|
|
||
|
||
> ❗ Для моделей 70B в Q4/Q5 — **GPU обязателен**.
|
||
> Без GPU возможна работа только с 14–32B (ограниченно).
|
||
|
||
---
|
||
|
||
### 3.2 Рекомендуемые модели Ollama
|
||
|
||
|Задача|Модель|
|
||
|---|---|
|
||
|Анализ кода|`qwen2.5-coder:32b`|
|
||
|Логи / reasoning|`deepseek-r1:32b`|
|
||
|Документация|`llama3.1:70b-q4`|
|
||
|Универсальная|`qwen2.5:72b-q4`|
|
||
|
||
---
|
||
|
||
## 4. Программные компоненты
|
||
|
||
### 4.1 Базовые сервисы
|
||
|
||
|Компонент|Назначение|
|
||
|---|---|
|
||
|Ollama|LLM inference|
|
||
|Reverse Proxy (Traefik / Nginx)|Auth + TLS|
|
||
|Vector DB (Qdrant / Milvus)|Knowledge Base|
|
||
|Object Storage (S3-compatible)|Документы|
|
||
|MCP Services|Data ingestion|
|
||
|Auth (OIDC / Basic)|Контроль доступа|
|
||
|
||
---
|
||
|
||
### 4.2 MCP (Model Context Protocol) сервисы
|
||
|
||
#### MCP-Gitea
|
||
|
||
- Чтение репозиториев
|
||
|
||
- Анализ:
|
||
|
||
- Kubernetes manifests
|
||
|
||
- Helm charts
|
||
|
||
- Terraform
|
||
|
||
- Jenkinsfile / GitHub Actions
|
||
|
||
- Поддержка:
|
||
|
||
- branch / tag / commit
|
||
|
||
- diff / blame
|
||
|
||
|
||
#### MCP-Docker-Swarm
|
||
|
||
- Сервисы и стеки
|
||
|
||
- docker-compose.yml
|
||
|
||
- Service logs
|
||
|
||
- Versions / rollout state
|
||
|
||
|
||
#### MCP-Kubernetes
|
||
|
||
- API Server (read-only)
|
||
|
||
- Resources:
|
||
|
||
- Pods / Deployments / StatefulSets
|
||
|
||
- Events
|
||
|
||
- ConfigMaps / Secrets (masked)
|
||
|
||
- kubectl-like queries
|
||
|
||
|
||
#### MCP-Docs / Logs
|
||
|
||
- Markdown / PDF / TXT
|
||
|
||
- Centralized logs (Loki / files)
|
||
|
||
- Chunking + embedding
|
||
|
||
|
||
---
|
||
|
||
## 5. Knowledge Base (RAG)
|
||
|
||
### Источники данных
|
||
|
||
- Git-репозитории
|
||
|
||
- Kubernetes manifests
|
||
|
||
- CI/CD pipelines
|
||
|
||
- Runbooks
|
||
|
||
- ADR / RFC
|
||
|
||
- Logs (выборочно)
|
||
|
||
|
||
### Требования
|
||
|
||
- Chunk size: 500–1000 tokens
|
||
|
||
- Embeddings: bge / nomic / instructor
|
||
|
||
- Versioning источников
|
||
|
||
- Re-index по webhook
|
||
|
||
|
||
---
|
||
|
||
## 6. Безопасность
|
||
|
||
### Обязательно
|
||
|
||
- TLS (internal + external)
|
||
|
||
- Read-only доступ к Kubernetes
|
||
|
||
- Secrets masking
|
||
|
||
- Role-based access (RBAC)
|
||
|
||
- Network isolation (VLAN / namespaces)
|
||
|
||
|
||
### Желательно
|
||
|
||
- Audit logs
|
||
|
||
- Prompt filtering
|
||
|
||
- Rate limiting
|
||
|
||
- Per-user context limits
|
||
|
||
|
||
---
|
||
|
||
## 7. Производительность и лимиты
|
||
|
||
|Параметр|Значение|
|
||
|---|---|
|
||
|Users|до 10|
|
||
|Concurrent requests|5–8|
|
||
|Context length|32k–128k|
|
||
|Avg response|2–10 сек|
|
||
|Max model load|1–2 модели одновременно|
|
||
|
||
---
|
||
|
||
## 8. Развертывание
|
||
|
||
### Варианты
|
||
|
||
- Standalone bare-metal
|
||
|
||
- VM + GPU passthrough
|
||
|
||
- Kubernetes (с GPU node pool)
|
||
|
||
|
||
### Рекомендуется
|
||
|
||
- Docker Compose / systemd для Ollama
|
||
|
||
- Отдельный namespace для MCP
|
||
|
||
- GitOps (Argo CD)
|
||
|
||
|
||
---
|
||
|
||
## 9. Эксплуатация
|
||
|
||
- Model cache warming
|
||
|
||
- Scheduled re-index
|
||
|
||
- GPU monitoring (nvidia-smi)
|
||
|
||
- Backup:
|
||
|
||
- Vector DB
|
||
|
||
- Docs storage
|
||
|
||
- Upgrade policy:
|
||
|
||
- Models
|
||
|
||
- MCP schemas
|
||
|
||
|
||
---
|
||
|
||
## 10. Ограничения и риски
|
||
|
||
- VRAM — основной bottleneck
|
||
|
||
- Большие контексты = latency
|
||
|
||
- Нужен контроль prompt-leak
|
||
|
||
- Не замена SRE/DevOps решений
|
||
|
||
|
||
---
|
||
|
||
## 11. Итоговая рекомендация (baseline)
|
||
|
||
**Оптимальная конфигурация:**
|
||
|
||
- 1× GPU 48 GB
|
||
|
||
- 128 GB RAM
|
||
|
||
- NVMe 2 TB
|
||
|
||
- Ollama + Qwen / DeepSeek
|
||
|
||
- MCP-Gitea + MCP-K8s
|
||
|
||
- Qdrant как Vector DB
|
||
|
||
|