Kubeshark

公式

クラスター全体のL4およびL7ネットワークトラフィック、パケット、API、完全なペイロードへのMCPアクセス。

Kubeshark MCPで何ができますか?

  • KFLフィルタを使用したL7 APIトランザクションのクエリlist_api_callsを使用して、ステータスコードやパスなどの条件に一致するHTTP、gRPC、Redis、Kafka、またはDNSリクエストを検索します。
  • 特定のAPIコールの詳細を検査get_api_callを使用して、単一トランザクションの完全なリクエスト/レスポンスデータを取得します。
  • 集約されたAPI統計の取得get_api_statsを使用して、トラフィックパターン、エラー率、またはレイテンシ分布を要約します。
  • L4ネットワークフローとサマリーの表示list_l4_flowsget_l4_flow_summaryを使用して、TCP/UDP接続を一覧表示し、接続の概要を取得します。
  • PCAPスナップショットの作成と管理create_snapshotlist_snapshotsを使用して、オフライン分析のためにネットワークトラフィックをキャプチャします。
  • L7プロトコル解析の制御enable_dissectiondisable_dissectionを使用して、必要に応じて深いプロトコル解析を有効または無効にします。

ドキュメント

Kubeshark MCP Server

Kubeshark MCP (Model Context Protocol) サーバーは、Claude Desktop、Cursor、その他のMCP互換クライアントがリアルタイムのKubernetesネットワークトラフィックをクエリできるようにします。

AIスキル

MCPはツールを提供し、AIスキルはエージェントにそれらの使用方法を教えます。 スキルは、生のMCP機能を根本原因分析、トラフィックフィルタリング、フォレンジック調査などのドメイン固有のワークフローに変換します。 インストールと使用方法については、スキルREADMEを参照してください。

スキル説明
network-rcaネットワーク根本原因分析 — PCAPおよび解析ルートを使用したスナップショットベースの遡及調査
kflKFL2フィルターエキスパート — サポートされているすべてのプロトコルにわたるトラフィッククエリの作成、デバッグ、最適化

機能

  • L7 APIトラフィック分析: HTTP、gRPC、Redis、Kafka、DNSトランザクションのクエリ
  • L4ネットワークフロー: トラフィック統計を含むTCP/UDPフローの表示
  • クラスター管理: Kubesharkデプロイメントの開始/停止(安全制御付き)
  • PCAPスナップショット: ネットワークキャプチャの作成とエクスポート
  • 組み込みプロンプト: 一般的な分析タスク用の事前設定済みプロンプト

インストール

1. Kubeshark CLIのインストール

# 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"]
    }
  }
}

ゲートHub (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トラフィックが観測されたPod、サービス、名前空間を一覧表示
list_api_callsKFLフィルタリングを使用してL7 APIトランザクションをクエリ
get_api_call特定のAPI呼び出しに関する詳細情報を取得
get_api_stats集約されたAPI統計を取得
list_l4_flowsL4 (TCP/UDP) ネットワークフローを一覧表示
get_l4_flow_summaryL4接続サマリーを取得
list_snapshotsすべてのPCAPスナップショットを一覧表示
create_snapshot新しいPCAPスナップショットを作成
get_dissection_statusL7プロトコル解析ステータスを確認
enable_dissectionL7プロトコル解析を有効化
disable_dissectionL7プロトコル解析を無効化

クラスター管理 (プロキシモードのみ)

ツール説明要件
check_kubeshark_statusKubesharkが実行中かどうかを確認-
start_kubesharkKubesharkをクラスターにデプロイ--allow-destructive
stop_kubesharkKubesharkをクラスターから削除--allow-destructive

利用可能なプロンプト

プロンプト説明
analyze_trafficAPIトラフィックパターンを分析し、問題を特定
find_errorsAPIエラーと障害を検索して要約
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オプション

オプション説明
--urlKubeshark Hubへの直接URL
--tokenゲートHubに対する --url モード用のHub SA/ベアラートークン (KUBESHARK_HUB_TOKEN も同様)。プロキシモードでは無視され、トークンを発行して自動更新します
--kubeconfigkubeconfigファイルへのパス
--allow-destructive開始/停止操作を有効化
--list-tools利用可能なツールを一覧表示して終了
--mcp-configClaude Desktop設定JSONを出力

KFL (Kubeshark Filter Language)

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