Нативный 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 решает эту задачу двояко:
- Он разделяет доступные операции на тематические наборы (toolsets), экономя контекстное окно модели.
- Он предоставляет встроенные механизмы ограничений (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).
Сервер поддерживает два основных режима работы:
- Стандартный ввод-вывод (stdio): локальный процесс запускается клиентом (например, Claude Desktop) и обменивается данными через стандартные потоки ввода-вывода.
- Сетевой режим (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 выполните следующие действия:
- Создание изолированного ServiceAccount: Настройте отдельную учетную запись в кластере с минимальными правами (Read-Only RBAC Role) в целевом Namespace.
- Конфигурация Claude Desktop: Добавьте описание сервера в файл
claude_desktop_config.json:{ "mcpServers": { "kubernetes": { "command": "npx", "args": [ "-y", "kubernetes-mcp-server@latest", "--read-only", "--disable-multi-cluster" ] } } } - Настройка файла конфигурации 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" - Проверка работы и аудита:
- Запустите бинарный файл с проверкой доступных команд:
./kubernetes-mcp-server --help. - Выполните через агента тестовый запрос списка подов.
- Убедитесь в логах сервера и Kubernetes API Audit Log, что попытки создания ресурсов или чтения Secret успешно отклоняются.
- Запустите бинарный файл с проверкой доступных команд:
Применение kubernetes-mcp-server предоставляет инженерным командам безопасную, нативную и строго управляемую среду для работы AI-ассистентов с инфраструктурой Kubernetes.

