Сервис развивается: тестируем формат, собираем идеи, улучшаем сервис. Есть идеи?

Написать
Войти
Дайджесты
Архитектура kubernetes-mcp-server для управления кластером через AI-агентов

Нативный Go-сервер kubernetes-mcp-server: прямая интеграция кластеров Kubernetes и OpenShift с AI-агентами

Разработанный на языке Go сервер kubernetes-mcp-server связывает AI-агентов с API-сервером Kubernetes и OpenShift напрямую без вызова утилит kubectl и helm. Проект поддерживает модульные тулсеты для подов, Helm и Tekton, защитные режимы read-only, блокировку секретов и телеметрию OpenTelemetry.

Нативный Go-сервер kubernetes-mcp-server: прямая интеграция кластеров Kubernetes и OpenShift с AI-агентами

Внедрение автономных и ассистирующих искусственных интеллектуальных агентов в инженерные процессы DevOps требует создания надежных мостов между языковыми моделями (LLM) и инфраструктурой оркестрации. Открытый протокол взаимодействия контекста моделей Model Context Protocol (MCP) стал стандартом для безопасного подключения внешних инструментов к языковым моделям. Проект kubernetes-mcp-server, созданный в рамках сообщества containers на языке Go, представляет собой специализированный MCP-сервер для прямого взаимодействия с API-сервером Kubernetes и платформы Red Hat OpenShift.

В отличие от простых скриптовых оберток, формирующих текстовые команды для утилит kubectl или helm, данный сервер написан на нативном Go с использованием официальной библиотеки client-go. Это полностью исключает зависимости от сторонних бинарных файлов в среде выполнения, ускоряет обработку запросов и обеспечивает точный контроль над правами доступа.

Протокол MCP и задача управления Kubernetes из среды LLM

При работе AI-агента (например, в средах Claude Desktop, VS Code, Cursor или Goose) языковая модель не имеет прямого доступа к сетевым сокетам и командной строке. Протокол MCP описывает стандартный формат сообщений (JSON-RPC), с помощью которого модель запрашивает список доступных функций (tools) и выполняет их с заданными аргументами.

Главная сложность при управлении Kubernetes из среды LLM заключается в огромном объеме информации и риске случайного уничтожения инфраструктуры. kubernetes-mcp-server решает эту задачу двояко:

  1. Он разделяет доступные операции на тематические наборы (toolsets), экономя контекстное окно модели.
  2. Он предоставляет встроенные механизмы ограничений (read-only режимы и фильтры ресурсов), предотвращающие несанкционированные действия.

Архитектура нативного API-клиента: отказ от CLI-оберток

Использование библиотеки client-go вместо вызова процессов kubectl дает серверу фундаментальные преимущества в надежности и безопасности. Вызов утилиты командной строки через exec.Command заставляет программу парсить текстовые строки stdout/stderr, реагировать на изменения текстового форматирования и обрабатывать непредсказуемые аварийные завершения.

Прямой Go-клиент устанавливает сокетное соединение с REST API Kubernetes, аутентифицируется через стандартные механизмы (ServiceAccount токен или файлы .kube/config) и получает строго структурированные отклики в формате JSON/Protobuf. Сервер самостоятельно преобразует объекты Kubernetes (Pods, Services, Deployments, Custom Resource Definitions) в понятные для LLM схемы вызовов.

Модель безопасности: RBAC, флаги ограничений и защита секретов

Прямое подключение к API не означает игнорирование ролевой модели доступа Kubernetes (RBAC). MCP-сервер выполняет все запросы исключительно от имени тех учетных данных, с которыми он запущен. Если у ServiceAccount нет прав на чтение конкретного пространства имен (Namespace), попытка агента выполнить запрос завершится стандартной ошибкой 403 Forbidden.

Для защиты производственных кластеров в kubernetes-mcp-server предусмотрены дополнительные уровни защиты:

  • Флаг --read-only: полностью блокирует любые операции создания, изменения и удаления ресурсов (create, update, patch, delete). Сервер оставляет только безопасные чтение и списки (get, list, watch).
  • Флаг --disable-destructive: запрещает деструктивные действия (удаление подов, очистка пространств имен), оставляя при этом возможность безопасного обновления параметров.
  • Флаг --disable-multi-cluster: принудительно фиксирует текущий контекст из файла kubeconfig, предотвращая случайное переключение агента на другие кластеры.
  • Блокировка чувствительных ресурсов: в конфигурации сервера можно явно задать список запрещенных ресурсов (denied_resources), например, запретить чтение объектов Secret или ConfigMap с паролями.

Модульные наборы инструментов (Toolsets): Core, Helm и Tekton

Чтобы не перегружать контекст языковой модели сотнями функций, сервер позволяет включать только необходимые группы инструментов через параметр --toolsets:

  • Core Toolset: базовые CRUD-операции над стандартными ресурсами Kubernetes (Pods, Services, Deployments, Nodes, Events).
  • Pod Operations: специализированные функции для получения логов подов, просмотра метрик использования CPU/RAM, выполнения команд внутри контейнеров (exec) и запуск временных подов из образов.
  • Helm Toolset: управление Helm-релизами (установка, просмотр статуса, удаление чартов).
  • Tekton Toolset: управление пайплайнами непрерывной интеграции Tekton (инспекция объектов PipelineRun и TaskRun, запуск, отмена и диагностика ошибок).
  • Расширения OpenShift и Kiali: встроенная поддержка проектов OpenShift (Projects, Routes), сервис-меша Kiali и виртуализации KubeVirt.

Режимы доставки, подключения и поддержка HTTP/SSE

kubernetes-mcp-server поставляется в виде автономных бинарных файлов под Linux, macOS и Windows, а также в виде контейнерного образа, npm-пакета (kubernetes-mcp-server) и Python-пакета (uvx).

Сервер поддерживает два основных режима работы:

  1. Стандартный ввод-вывод (stdio): локальный процесс запускается клиентом (например, Claude Desktop) и обменивается данными через стандартные потоки ввода-вывода.
  2. Сетевой режим (HTTP/SSE): при указании параметра --port сервер открывает сетевые конечные точки /mcp и /sse. Данный режим используется для централизованного размещения сервера в кластере. В сетевом режиме поддерживается интеграция с провайдерами аутентификации OAuth2/OIDC (Keycloak, Microsoft Entra ID).

Конфигурация через TOML, мультикластерность и телеметрия

Для постоянных настроек сервер поддерживает конфигурационные файлы в формате TOML (--config /etc/kubernetes-mcp-server/config.toml). Изменения в файле конфигурации могут автоматически применяться без перезапуска процесса по сигналу SIGHUP.

Для мониторинга работы сервера и аудита действий AI-агентов встроен модуль наблюдаемости OpenTelemetry. Сервер генерирует распределенные трассы (traces) и метрики запросов, а также предоставляет локальную конечную точку /stats для снятия статистики производительности в реальном времени.

Практический чек-лист по безопасной настройке и развертыванию

Для безопасного подключения AI-агента к кластеру Kubernetes выполните следующие действия:

  1. Создание изолированного ServiceAccount: Настройте отдельную учетную запись в кластере с минимальными правами (Read-Only RBAC Role) в целевом Namespace.
  2. Конфигурация Claude Desktop: Добавьте описание сервера в файл claude_desktop_config.json:
    {
      "mcpServers": {
        "kubernetes": {
          "command": "npx",
          "args": [
            "-y",
            "kubernetes-mcp-server@latest",
            "--read-only",
            "--disable-multi-cluster"
          ]
        }
      }
    }
    
  3. Настройка файла конфигурации TOML: Для продуктивного использования создайте файл /etc/kubernetes-mcp-server/config.toml:
    read_only = true
    disable_multi_cluster = true
    toolsets = ["core", "pod", "helm"]
    
    [[denied_resources]]
    group = ""
    version = "v1"
    resource = "secrets"
    
  4. Проверка работы и аудита:
    • Запустите бинарный файл с проверкой доступных команд: ./kubernetes-mcp-server --help.
    • Выполните через агента тестовый запрос списка подов.
    • Убедитесь в логах сервера и Kubernetes API Audit Log, что попытки создания ресурсов или чтения Secret успешно отклоняются.

Применение kubernetes-mcp-server предоставляет инженерным командам безопасную, нативную и строго управляемую среду для работы AI-ассистентов с инфраструктурой Kubernetes.