Add docs/gitops-cicd/Ollama.md
This commit is contained in:
309
docs/gitops-cicd/Ollama.md
Normal file
309
docs/gitops-cicd/Ollama.md
Normal file
@@ -0,0 +1,309 @@
|
|||||||
|
# Требования к серверу и архитектуре 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
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user