Files
k3s-gitops/apps/ollama-mcp/SUMMARY.md

321 lines
8.8 KiB
Markdown
Raw Permalink 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.

# 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
```