321 lines
8.8 KiB
Markdown
321 lines
8.8 KiB
Markdown
# Ollama MCP Integration - Summary
|
||
|
||
## Что создано
|
||
|
||
Полное решение для интеграции Ollama с твоим Kubernetes кластером и Gitea через MCP серверы.
|
||
|
||
### Структура проекта
|
||
|
||
```
|
||
apps/ollama-mcp/
|
||
├── README.md # Полная документация
|
||
├── QUICKSTART.md # Быстрый старт
|
||
├── install.sh # Автоматическая установка
|
||
├── docker-compose.yml # Docker Compose конфигурация
|
||
├── .env.example # Пример переменных окружения
|
||
├── .gitignore # Git ignore правила
|
||
├── config/
|
||
│ └── kubeconfig # Kubernetes конфигурация (создается при установке)
|
||
├── mcp-kubernetes/
|
||
│ ├── Dockerfile
|
||
│ ├── package.json
|
||
│ └── index.js # REST API для Kubernetes
|
||
└── mcp-gitea/
|
||
├── Dockerfile
|
||
├── package.json
|
||
└── index.js # REST API для Gitea
|
||
```
|
||
|
||
## Установка на GPU сервере
|
||
|
||
### Вариант 1: Автоматическая установка (рекомендуется)
|
||
|
||
```bash
|
||
curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash
|
||
```
|
||
|
||
### Вариант 2: Ручная установка
|
||
|
||
```bash
|
||
# 1. Клонировать репозиторий
|
||
git clone https://git.thedevops.dev/admin/k3s-gitops.git
|
||
cd k3s-gitops/apps/ollama-mcp
|
||
|
||
# 2. Настроить окружение
|
||
cp .env.example .env
|
||
nano .env # Добавить GITEA_TOKEN
|
||
|
||
# 3. Скопировать kubeconfig
|
||
mkdir -p config
|
||
cp ~/.kube/config config/kubeconfig
|
||
|
||
# 4. Запустить
|
||
docker-compose up -d
|
||
```
|
||
|
||
## Что получаешь
|
||
|
||
### 1. MCP Kubernetes Server (порт 3001)
|
||
|
||
REST API для управления кластером:
|
||
|
||
**Доступные эндпоинты:**
|
||
|
||
- `POST /api/pods/list` - список подов
|
||
```json
|
||
{"namespace": "argocd"}
|
||
```
|
||
|
||
- `POST /api/pods/logs` - логи пода
|
||
```json
|
||
{"name": "pod-name", "namespace": "argocd", "tailLines": 100}
|
||
```
|
||
|
||
- `POST /api/deployments/list` - список деплойментов
|
||
```json
|
||
{"namespace": "default"}
|
||
```
|
||
|
||
- `POST /api/deployments/get` - получить деплоймент
|
||
```json
|
||
{"name": "nginx", "namespace": "default"}
|
||
```
|
||
|
||
- `POST /api/services/list` - список сервисов
|
||
```json
|
||
{"namespace": "default"}
|
||
```
|
||
|
||
- `POST /api/namespaces/list` - список namespace
|
||
```json
|
||
{}
|
||
```
|
||
|
||
### 2. MCP Gitea Server (порт 3002)
|
||
|
||
REST API для работы с Git:
|
||
|
||
**Доступные эндпоинты:**
|
||
|
||
- `POST /api/repos/list` - список репозиториев
|
||
```json
|
||
{"owner": "admin"}
|
||
```
|
||
|
||
- `POST /api/repos/file/get` - содержимое файла
|
||
```json
|
||
{"owner": "admin", "repo": "k3s-gitops", "path": "apps/loki/statefulset.yaml", "branch": "main"}
|
||
```
|
||
|
||
- `POST /api/repos/tree/get` - содержимое директории
|
||
```json
|
||
{"owner": "admin", "repo": "k3s-gitops", "path": "apps", "branch": "main"}
|
||
```
|
||
|
||
- `POST /api/repos/file/create` - создать файл
|
||
```json
|
||
{
|
||
"owner": "admin",
|
||
"repo": "k3s-gitops",
|
||
"path": "test.yaml",
|
||
"content": "apiVersion: v1\nkind: Pod",
|
||
"message": "Add test file",
|
||
"branch": "main"
|
||
}
|
||
```
|
||
|
||
- `POST /api/repos/file/update` - обновить файл
|
||
```json
|
||
{
|
||
"owner": "admin",
|
||
"repo": "k3s-gitops",
|
||
"path": "test.yaml",
|
||
"content": "updated content",
|
||
"message": "Update test file",
|
||
"sha": "file-sha",
|
||
"branch": "main"
|
||
}
|
||
```
|
||
|
||
- `POST /api/repos/branches/list` - список веток
|
||
```json
|
||
{"owner": "admin", "repo": "k3s-gitops"}
|
||
```
|
||
|
||
## Интеграция с Ollama
|
||
|
||
### Способ 1: Прямые запросы через curl
|
||
|
||
Ollama может генерировать curl команды:
|
||
|
||
```bash
|
||
ollama run qwen2.5-coder:32b "
|
||
I have MCP servers running:
|
||
- Kubernetes API: http://localhost:3001
|
||
- Gitea API: http://localhost:3002
|
||
|
||
Generate curl command to list all pods in argocd namespace
|
||
"
|
||
```
|
||
|
||
### Способ 2: Custom Function/Tool
|
||
|
||
Создай промпт-шаблон для Ollama:
|
||
|
||
```bash
|
||
cat > ~/ollama-k8s-prompt.txt << 'EOF'
|
||
You are a Kubernetes and Git operations assistant. You have access to:
|
||
|
||
**Kubernetes MCP (http://localhost:3001):**
|
||
- POST /api/pods/list {"namespace": "name"}
|
||
- POST /api/pods/logs {"name": "pod", "namespace": "ns", "tailLines": 100}
|
||
- POST /api/deployments/list {"namespace": "name"}
|
||
- POST /api/services/list {"namespace": "name"}
|
||
- POST /api/namespaces/list {}
|
||
|
||
**Gitea MCP (http://localhost:3002):**
|
||
- POST /api/repos/list {"owner": "admin"}
|
||
- POST /api/repos/file/get {"owner": "admin", "repo": "name", "path": "file.yaml"}
|
||
- POST /api/repos/tree/get {"owner": "admin", "repo": "name", "path": "dir/"}
|
||
- POST /api/repos/file/create {"owner": "admin", "repo": "name", "path": "file", "content": "...", "message": "..."}
|
||
|
||
When asked to perform operations:
|
||
1. Generate the appropriate curl command
|
||
2. Execute it if possible
|
||
3. Interpret the results
|
||
4. Provide clear explanations
|
||
|
||
Always use JSON format for request bodies.
|
||
EOF
|
||
```
|
||
|
||
Использование:
|
||
```bash
|
||
ollama run qwen2.5-coder:32b "$(cat ~/ollama-k8s-prompt.txt)
|
||
|
||
User request: Покажи все поды в namespace monitoring и их статус"
|
||
```
|
||
|
||
### Способ 3: Wrapper Script
|
||
|
||
Создай `~/ollama-ops.sh`:
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
|
||
SYSTEM_PROMPT="You are a DevOps assistant with access to:
|
||
- Kubernetes API at http://localhost:3001
|
||
- Gitea API at http://localhost:3002
|
||
Generate and execute curl commands to fulfill user requests."
|
||
|
||
ollama run qwen2.5-coder:32b "$SYSTEM_PROMPT
|
||
|
||
User: $*"
|
||
```
|
||
|
||
Использование:
|
||
```bash
|
||
chmod +x ~/ollama-ops.sh
|
||
./ollama-ops.sh "список подов в argocd"
|
||
./ollama-ops.sh "покажи файл apps/loki/statefulset.yaml из k3s-gitops"
|
||
```
|
||
|
||
## Примеры использования
|
||
|
||
### Kubernetes операции:
|
||
|
||
```bash
|
||
# Список подов
|
||
curl -X POST http://localhost:3001/api/pods/list \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"namespace": "argocd"}'
|
||
|
||
# Логи
|
||
curl -X POST http://localhost:3001/api/pods/logs \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"name": "argocd-server-xxx", "namespace": "argocd", "tailLines": 50}'
|
||
|
||
# Deployments
|
||
curl -X POST http://localhost:3001/api/deployments/list \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"namespace": "monitoring"}'
|
||
```
|
||
|
||
### Gitea операции:
|
||
|
||
```bash
|
||
# Список репозиториев
|
||
curl -X POST http://localhost:3002/api/repos/list \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"owner": "admin"}'
|
||
|
||
# Содержимое файла
|
||
curl -X POST http://localhost:3002/api/repos/file/get \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"owner": "admin", "repo": "k3s-gitops", "path": "apps/loki/statefulset.yaml"}'
|
||
|
||
# Список файлов в директории
|
||
curl -X POST http://localhost:3002/api/repos/tree/get \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"owner": "admin", "repo": "k3s-gitops", "path": "apps"}'
|
||
```
|
||
|
||
## Проверка работы
|
||
|
||
```bash
|
||
# Health checks
|
||
curl http://localhost:3001/health
|
||
curl http://localhost:3002/health
|
||
|
||
# Статус контейнеров
|
||
docker-compose ps
|
||
|
||
# Логи
|
||
docker-compose logs -f
|
||
```
|
||
|
||
## Следующие шаги
|
||
|
||
1. **На GPU сервере:**
|
||
```bash
|
||
curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash
|
||
```
|
||
|
||
2. **Настроить Gitea токен:**
|
||
- Получить: https://git.thedevops.dev/user/settings/applications
|
||
- Добавить в `~/ollama-mcp/.env`
|
||
- Перезапустить: `docker-compose restart`
|
||
|
||
3. **Проверить работу:**
|
||
```bash
|
||
curl http://localhost:3001/health
|
||
curl http://localhost:3002/health
|
||
```
|
||
|
||
4. **Интегрировать с Ollama:**
|
||
- Создать промпт-шаблоны
|
||
- Настроить wrapper скрипты
|
||
- Или использовать прямые curl запросы
|
||
|
||
## Поддержка
|
||
|
||
- **Документация:** `apps/ollama-mcp/README.md`
|
||
- **Быстрый старт:** `apps/ollama-mcp/QUICKSTART.md`
|
||
- **Issues:** https://git.thedevops.dev/admin/k3s-gitops/issues
|
||
|
||
## Безопасность
|
||
|
||
- Kubeconfig защищен (права 600)
|
||
- Gitea токен в переменных окружения
|
||
- Изолированная Docker сеть
|
||
- Порты по умолчанию только на localhost
|
||
|
||
---
|
||
|
||
**Готово к установке!** 🚀
|
||
|
||
Просто выполни на GPU сервере:
|
||
```bash
|
||
curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash
|
||
```
|