Kubeshark

официальный

Доступ MCP к кластерному L4 и L7 сетевому трафику, пакетам, API и полным полезным нагрузкам.

Что можно делать с Kubeshark MCP?

  • Запрос L7 API транзакций с фильтрами KFL — используйте list_api_calls для поиска HTTP, gRPC, Redis, Kafka или DNS запросов, соответствующих условиям, таким как коды состояния или пути.
  • Детальный просмотр конкретного API вызова — получите полные данные запроса/ответа для одной транзакции с помощью get_api_call.
  • Получение агрегированной статистики API — обобщите шаблоны трафика, частоту ошибок или распределение задержек с помощью get_api_stats.
  • Просмотр L4 сетевых потоков и сводок — выведите список TCP/UDP соединений и получите обзор связности с помощью list_l4_flows и get_l4_flow_summary.
  • Создание и управление PCAP снимками — захватите сетевой трафик для офлайн-анализа с помощью create_snapshot и list_snapshots.
  • Управление разбором L7 протоколов — включайте или отключайте глубокий разбор протоколов по запросу с помощью enable_dissection и disable_dissection.

Документация

Kubeshark MCP-сервер

Kubeshark MCP-сервер (Model Context Protocol) позволяет AI-ассистентам, таким как Claude Desktop, Cursor и другим MCP-совместимым клиентам, запрашивать сетевой трафик Kubernetes в реальном времени.

AI-навыки

MCP предоставляет инструменты, а AI-навыки учат агентов ими пользоваться. Навыки превращают базовые возможности MCP в предметно-ориентированные рабочие процессы, такие как анализ первопричин, фильтрация трафика и криминалистическое исследование. Подробнее об установке и использовании см. в README навыков.

НавыкОписание
network-rcaАнализ первопричин сетевых проблем — ретроспективное исследование на основе снимков с маршрутами PCAP и разбора
kflЭксперт по фильтрам KFL2 — написание, отладка и оптимизация запросов трафика по всем поддерживаемым протоколам

Возможности

  • Анализ трафика API уровня L7: Запросы HTTP, gRPC, Redis, Kafka, DNS-транзакций
  • Сетевые потоки уровня L4: Просмотр потоков TCP/UDP со статистикой трафика
  • Управление кластером: Запуск/остановка развертываний Kubeshark (с элементами управления безопасностью)
  • Снимки PCAP: Создание и экспорт сетевых захватов
  • Встроенные подсказки: Предварительно настроенные подсказки для типовых задач анализа

Установка

1. Установите CLI Kubeshark

# macOS
brew install kubeshark

# Linux
sh <(curl -Ls https://kubeshark.com/install)

# Windows (PowerShell)
choco install kubeshark

Или загрузите со страницы Релизов GitHub.

2. Настройте Claude Desktop

Добавьте в конфигурацию Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

По умолчанию (требуется доступ kubectl / контекст kube)

{
  "mcpServers": {
    "kubeshark": {
      "command": "kubeshark",
      "args": ["mcp"]
    }
  }
}

С явным указанием пути к kubeconfig:

{
  "mcpServers": {
    "kubeshark": {
      "command": "kubeshark",
      "args": ["mcp", "--kubeconfig", "/path/to/.kube/config"]
    }
  }
}

Режим URL (kubectl не требуется)

Используйте, когда на машине нет доступа kubectl или контекста kube. Подключайтесь напрямую к существующему развертыванию Kubeshark:

{
  "mcpServers": {
    "kubeshark": {
      "command": "kubeshark",
      "args": ["mcp", "--url", "https://kubeshark.example.com"]
    }
  }
}

Для закрытого хаба (AUTH_ENABLED=true) режим URL не может выпустить токен (нет доступа к kube), поэтому укажите его явно через --token (или переменную окружения KUBESHARK_HUB_TOKEN). Выпустите его с машины, имеющей доступ к кластеру:

kubectl create token kubeshark-cli -n <release-namespace> --audience kubeshark-hub
{
  "mcpServers": {
    "kubeshark": {
      "command": "kubeshark",
      "args": ["mcp", "--url", "https://kubeshark.example.com", "--token", "<token>"]
    }
  }
}

Токен короткоживущий (~1 час), и режим URL не может автоматически его продлевать; когда он истекает, сервер выдает четкое сообщение 401 ... token expired/invalid — перевыпустите и перезапустите. Прокси-режим (по умолчанию, с доступом к kube) выпускает токен kubeshark-cli автоматически и автоматически продлевает его, поэтому долгоживущие сессии не прерываются.

С деструктивными операциями

{
  "mcpServers": {
    "kubeshark": {
      "command": "kubeshark",
      "args": ["mcp", "--allow-destructive", "--kubeconfig", "/path/to/.kube/config"]
    }
  }
}

3. Сгенерируйте конфигурацию

Используйте CLI для генерации конфигурации:

kubeshark mcp --mcp-config --url https://kubeshark.example.com

Доступные инструменты

Анализ трафика (все режимы)

ИнструментОписание
list_workloadsСписок подов, сервисов, пространств имен с наблюдаемым трафиком
list_api_callsЗапрос транзакций API уровня L7 с фильтрацией KFL
get_api_callПолучение подробной информации о конкретном вызове API
get_api_statsПолучение агрегированной статистики API
list_l4_flowsСписок сетевых потоков уровня L4 (TCP/UDP)
get_l4_flow_summaryПолучение сводки связности L4
list_snapshotsСписок всех снимков PCAP
create_snapshotСоздание нового снимка PCAP
get_dissection_statusПроверка статуса разбора протоколов L7
enable_dissectionВключение разбора протоколов L7
disable_dissectionОтключение разбора протоколов L7

Управление кластером (только прокси-режим)

ИнструментОписаниеТребуется
check_kubeshark_statusПроверка, запущен ли Kubeshark-
start_kubesharkРазвертывание Kubeshark в кластере--allow-destructive
stop_kubesharkУдаление Kubeshark из кластера--allow-destructive

Доступные подсказки

ПодсказкаОписание
analyze_trafficАнализ шаблонов трафика API и выявление проблем
find_errorsПоиск и обобщение ошибок и сбоев API
trace_requestОтслеживание пути запроса через микросервисы
show_topologyОтображение топологии взаимодействия сервисов
latency_analysisАнализ шаблонов задержек и выявление медленных эндпоинтов
security_auditАудит трафика на предмет проблем безопасности
compare_trafficСравнение шаблонов трафика между временными периодами
debug_connectionОтладка проблем связности между сервисами

Примеры диалогов

User: Show me all HTTP 500 errors in the last hour

Claude: I'll query the API traffic for 500 errors.
[Calling list_api_calls with kfl="http and response.status == 500"]

Found 12 HTTP 500 errors:
1. POST /api/checkout -> payment-service (500)
   Time: 10:23:45 | Latency: 2340ms
...
User: What services are communicating with the database?

Claude: Let me check the L4 flows to the database.
[Calling list_l4_flows with dst_filter="postgres"]

Found 5 services connecting to postgres:5432:
- orders-service: 456KB transferred
- users-service: 123KB transferred
...

Параметры CLI

ПараметрОписание
--urlПрямой URL к хабу Kubeshark
--tokenТокен SA/bearer хаба для режима --url при работе с закрытым хабом (также KUBESHARK_HUB_TOKEN); игнорируется в прокси-режиме, который выпускает и автоматически продлевает токен
--kubeconfigПуть к файлу kubeconfig
--allow-destructiveВключение операций запуска/остановки
--list-toolsВывод списка доступных инструментов и выход
--mcp-configВывод JSON конфигурации Claude Desktop

KFL (язык фильтрации Kubeshark)

Запрос трафика с использованием синтаксиса KFL:

# HTTP requests to a specific path
http and request.path == "/api/users"

# Errors only
response.status >= 400

# Specific source pod
src.pod.name == "frontend-.*"

# Multiple conditions
http and src.namespace == "default" and response.status == 500

Реестр MCP

Kubeshark публикуется в Реестре MCP автоматически при каждом релизе.

Файл server.json в этой директории является эталонным. Фактические метаданные реестра (версия, хеши SHA256) генерируются автоматически во время рабочего процесса релиза. Подробнее см. в .github/workflows/release.yml.

Ссылки

Лицензия

Apache-2.0