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

8.8 KiB
Raw Blame History

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: Автоматическая установка (рекомендуется)

curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash

Вариант 2: Ручная установка

# 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 - список подов

    {"namespace": "argocd"}
    
  • POST /api/pods/logs - логи пода

    {"name": "pod-name", "namespace": "argocd", "tailLines": 100}
    
  • POST /api/deployments/list - список деплойментов

    {"namespace": "default"}
    
  • POST /api/deployments/get - получить деплоймент

    {"name": "nginx", "namespace": "default"}
    
  • POST /api/services/list - список сервисов

    {"namespace": "default"}
    
  • POST /api/namespaces/list - список namespace

    {}
    

2. MCP Gitea Server (порт 3002)

REST API для работы с Git:

Доступные эндпоинты:

  • POST /api/repos/list - список репозиториев

    {"owner": "admin"}
    
  • POST /api/repos/file/get - содержимое файла

    {"owner": "admin", "repo": "k3s-gitops", "path": "apps/loki/statefulset.yaml", "branch": "main"}
    
  • POST /api/repos/tree/get - содержимое директории

    {"owner": "admin", "repo": "k3s-gitops", "path": "apps", "branch": "main"}
    
  • POST /api/repos/file/create - создать файл

    {
      "owner": "admin",
      "repo": "k3s-gitops",
      "path": "test.yaml",
      "content": "apiVersion: v1\nkind: Pod",
      "message": "Add test file",
      "branch": "main"
    }
    
  • POST /api/repos/file/update - обновить файл

    {
      "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 - список веток

    {"owner": "admin", "repo": "k3s-gitops"}
    

Интеграция с Ollama

Способ 1: Прямые запросы через curl

Ollama может генерировать curl команды:

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:

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

Использование:

ollama run qwen2.5-coder:32b "$(cat ~/ollama-k8s-prompt.txt)

User request: Покажи все поды в namespace monitoring и их статус"

Способ 3: Wrapper Script

Создай ~/ollama-ops.sh:

#!/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: $*"

Использование:

chmod +x ~/ollama-ops.sh
./ollama-ops.sh "список подов в argocd"
./ollama-ops.sh "покажи файл apps/loki/statefulset.yaml из k3s-gitops"

Примеры использования

Kubernetes операции:

# Список подов
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 операции:

# Список репозиториев
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"}'

Проверка работы

# Health checks
curl http://localhost:3001/health
curl http://localhost:3002/health

# Статус контейнеров
docker-compose ps

# Логи
docker-compose logs -f

Следующие шаги

  1. На GPU сервере:

    curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash
    
  2. Настроить Gitea токен:

  3. Проверить работу:

    curl http://localhost:3001/health
    curl http://localhost:3002/health
    
  4. Интегрировать с Ollama:

    • Создать промпт-шаблоны
    • Настроить wrapper скрипты
    • Или использовать прямые curl запросы

Поддержка

Безопасность

  • Kubeconfig защищен (права 600)
  • Gitea токен в переменных окружения
  • Изолированная Docker сеть
  • Порты по умолчанию только на localhost

Готово к установке! 🚀

Просто выполни на GPU сервере:

curl -sSL https://git.thedevops.dev/admin/k3s-gitops/raw/branch/main/apps/ollama-mcp/install.sh | bash