kubeleash について
kubeleashは、コンテキストごとのポリシーでAIエージェントのKubernetesクラスターへのアクセスを仲介するローカルMCPサーバーです。権限の強いkubeconfigを使う場合も追加の許可・拒否ルールを適用し、呼び出しがクラスターに届く前に操作を遮断します。
主な機能
- 01kubeコンテキストごとのポリシー適用
- 02kubeconfig権限を超えたアクセス制限
- 03deleteやexecなど破壊的な操作の拒否
- 04Kubernetesリソース向け汎用ツール
- 05判定内容をJSON監査ログに記録
活用シーン
- 01本番環境でエージェントを読み取り専用に制限
- 02ステージング環境に本番より広い操作を許可
- 03AIエージェントによるKubernetes操作の制御
MCP 対応
stdio経由でローカル実行し、list、get、apply、delete、logs、exec、scale、capabilitiesを含む8つのKubernetesツールをMCPクライアントに公開します。各呼び出しはクラスターに到達する前にポリシーで検査されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/kubeleash/kubeleash:0.3.0ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/kubeleash/kubeleash:0.3.0stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
kubeleash
過剰な権限を持つ kubeconfig を指定しても、本番環境を吹き飛ばすことはできません。
クラスター上の AI エージェントを守るガードレール。 kubeleash は Kubernetes 向けのローカル MCP サーバーです。その特長は、RBAC スタイルの コンテキスト単位のアクセス制御です。kubeconfig を指定するだけで、たとえクラスター管理者のものでも、ローカルのポリシーファイルによって、エージェントが実行できる操作を Kubernetes コンテキストごとに制限できます。破壊的な操作は、クラスターへの呼び出しが届く前に制御されます。
AI クライアントに kubeleash を追加
インストールするとローカルの kubeleash バイナリが起動します。brew、go install、またはコンテナから入手してください(インストールを参照)。VS Code ではワンクリックでインストールできます。Cursor と Claude ではセットアップ手順を開きます(GitHub ではワンクリック用の cursor:// リンクが削除されるため、コピー&ペースト用のリンクはそちらに掲載しています)。
理由
ほとんどの Kubernetes MCP サーバーは、kubeconfig の権限をそのまま引き継ぎます。つまり、認証情報で許可されている操作は、エージェントも実行できます。kubeleash は、この用途でネイティブ RBAC では表現できない次の 3 つの機能を追加します。
- 認証情報とは独立してエージェントを制限します。 実効アクセス権は常に
kubeconfig-grants ∩ policy-allowsとなり、kubeleash が行うのは権限の差し引きだけです。 - コンテキストを考慮したガードレール。 ポリシーはコンテキスト(本番環境、ステージング、開発環境)ごとに異なります。ネイティブ RBAC はクラスター単位です。
- 破壊的な動詞(
delete/exec/…)をブロックし、エージェントの誤操作やプロンプトインジェクションに対する安全策を提供します。
kubeleash が強制すること
kubeleash が制御するのは、kubeleash 経由でルーティングされた呼び出しだけです。エージェントがクラスターにアクセスする唯一の経路が kubeleash である場合、確実な保証を提供します。エージェントがシェルアクセス(生の kubectl、oc、API)も持つ場合は、kubeleash を回避できるため、シェルを利用可能なアシスタントでは kubeleash は助言的な役割にとどまります。その場合は using-kubeleash スキルを併用してください。このスキルは、kubeleash が利用できないときに kubectl に頼らず、エージェントが停止するよう指示します。
ポリシーを 10 秒で理解
policies:
- contexts: ".*prod.*" # regex over the active context name
allow:
resources: ["*"]
verbs: [get, list, watch] # read-only in prod
deny:
verbs: [exec] # never, regardless of credentials
拒否が優先されます。デフォルトでは拒否します。ポリシーに問題がある場合は起動を拒否し、決してフェイルオープンしません。
より詳しいコメント付きポリシー(本番環境は読み取り専用、ステージングはより広い権限、開発環境は名前空間単位の制限)については、examples/policy.yaml を参照してください。
クイックスタート
インストールします(ここでは Homebrew を紹介します。go install と
コンテナーについては[インストール](#install)を参照してください)。クラスターに触れることなく、ポリシーを試せます。
brew install kubeleash/tap/kubeleash
# Grab the commented example policy:
curl -fsSL https://raw.githubusercontent.com/kubeleash/kubeleash/main/examples/policy.yaml -o policy.yaml
# See how kubeleash validates and normalizes a policy (no cluster needed):
kubeleash --policy policy.yaml --print-effective-policy
# Try it without touching any cluster — every decision is logged, nothing runs:
kubeleash --policy policy.yaml --dry-run
ソースからビルドする場合は、git clone https://github.com/kubeleash/kubeleash && cd kubeleash && go build -o kubeleash ./cmd/kubeleash を実行します(Go 1.26 以降)。
次に、MCP クライアントから接続します([以下](#use-it-as-an-mcp-server)を参照してください)。kubeleash は stdio 経由で MCP を使用するため、デーモンとして実行するのではなく、クライアントによって起動されます。
| フラグ | 用途 |
|---|---|
--policy <path> | ポリシーファイルです。必須です(または K8S_MCP_POLICY を設定してください)。どちらも指定しない場合、kubeleash は起動を拒否します。デフォルト拒否では、許可されない状態にフォールバックすることはありません。 |
--kubeconfig <path> | kubeconfig を明示的に指定します。省略すると、標準の client-go ルール($KUBECONFIG、~/.kube/config)が使用されます。 |
--dry-run | すべての判定を評価してログに記録しますが、クラスターに対して実行することはありません。 |
--print-effective-policy | 解決・正規化されたルールを出力して終了します。 |
--log-level <level> | debug/info/warn/error(デフォルトは info)です。監査ログは stderr に JSON 形式で出力されます(stdout は MCP トランスポートです)。 |
--version | バージョン、コミット、ビルド日時を出力します。 |
インストール
どのインストール方法でも、kubeleash は ローカルで stdio 経由により実行されます。クライアントがバイナリを起動し、ホストされることはありません。kubeleash は
公式 MCP Registry に
io.github.kubeleash/kubeleash として登録されているため、レジストリ対応クライアントからも検出できます。
ワンクリック
[Cursor / VS Code に追加](#add-kubeleash-to-your-ai-client)ボタンが
上部にあり、最も手早く設定できます(ボタンを使うには kubeleash バイナリが PATH 上に必要です。[手動](#manual)を参照してください)。その他のクライアント:
Claude Code — このリポジトリ自体がプラグインマーケットプレイスです。
/plugin marketplace add kubeleash/kubeleash
/plugin install kubeleash@kubeleash
個別のインストール手順はありません。初回実行時に、プラグインは PATH 上にある kubeleash を使用します。PATH 上にない場合は、対応するリリースバイナリをダウンロードして(チェックサムを検証したうえで)キャッシュします。
デフォルトで安全に使用でき、最初にポリシーを作成する必要はありません。~/.kubeleash/policy.yaml にポリシーがない場合、初回実行時にプラグインが読み取り専用のスターターポリシーを書き込みます(get/list/watch は許可し、exec/delete は拒否します)。確認したうえで、許可するアクセスを増やしてください。(この利便性はプラグイン固有のものです。バイナリを直接実行する場合は、明示的な --policy が引き続き必須であり、指定しないと起動を拒否します。)
プラグインには 2 つのスキルも含まれています。using-kubeleash(ゲート付きツールを介してエージェントが問い合わせや操作を行う方法)と authoring-kubeleash-policy(ポリシーの作成方法)です。これにより、エージェントはツール一覧だけでなく、ガードレールも理解できます。
Claude Desktop — リリースページから
kubeleash.mcpb をダウンロードしてダブルクリックします。バンドルにはバイナリが含まれており、ポリシーと kubeconfig の入力が求められます。
Cursor / VS Code のディープリンク URL(ボタンが動作しない場合)
Cursor(入力を求めることができないため、後から Settings → MCP でプレースホルダーのパスを編集してください)。
デコード後は {"command":"kubeleash","args":["--policy","/absolute/path/to/policy.yaml"]} になります。
cursor://anysphere.cursor-deeplink/mcp/install?name=kubeleash&config=eyJjb21tYW5kIjoia3ViZWxlYXNoIiwiYXJncyI6WyItLXBvbGljeSIsIi9hYnNvbHV0ZS9wYXRoL3RvL3BvbGljeS55YW1sIl19
VS Code(ポリシーのパスを入力するよう求められます)。
vscode:mcp/install?%7B%22name%22%3A%22kubeleash%22%2C%22command%22%3A%22kubeleash%22%2C%22args%22%3A%5B%22--policy%22%2C%22%24%7Binput%3ApolicyPath%7D%22%5D%2C%22inputs%22%3A%5B%7B%22id%22%3A%22policyPath%22%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22Path%20to%20your%20kubeleash%20policy.yaml%22%7D%5D%7D
手動
# Homebrew
brew install kubeleash/tap/kubeleash
# Go
go install github.com/kubeleash/kubeleash/cmd/kubeleash@latest
# Container (great for running the MCP server sandboxed)
docker run --rm -i -v ~/.kube:/root/.kube:ro -v ./policy.yaml:/policy.yaml:ro \
ghcr.io/kubeleash/kubeleash --policy /policy.yaml
kubeleash は ローカルで stdio 経由により実行され、クラスターとのみ通信します。 リモート/ホスト型 URL コネクターは意図的に用意していません。このようなコネクターを用意すると、クラスターの認証情報を第三者に渡すことになるためです。
MCP サーバーとして使う
kubeleash は、GVK に依存しない汎用ツールを 8 つ公開しています(k8s_list、k8s_get、
k8s_apply、k8s_delete、k8s_logs、k8s_exec、k8s_scale、および
k8s_capabilities)。CRD を含むすべてのリソースで動作します。すべての呼び出しはポリシーに照らして確認され、stderr に JSON 形式の監査ログとして記録されます(stdout は MCP トランスポートです)。stdio 経由で MCP を使用するため、クライアントからバイナリ(またはコンテナー)に接続します。
// Claude Desktop / Cursor / VS Code MCP config
{
"mcpServers": {
"kubeleash": {
"command": "kubeleash",
"args": ["--policy", "/absolute/path/to/policy.yaml"],
"env": { "KUBECONFIG": "/absolute/path/to/kubeconfig" }
}
}
}
プライバシー
テレメトリーなし。外部への通信なし。設計上、ローカルのみです。 kubeleash は、接続先として指定した Kubernetes API サーバーとのみ通信します。クラスターの認証情報を経由させるリモートまたはホステッドコネクターは、意図的に用意していません。これは不足ではなく、機能です。特権認証情報を使って実際のクラスターに対して実行するため、エージェントと API サーバーの間には、leash 以外のものを介在させるべきではありません。
プロジェクト
- 設計 · コントリビューション · セキュリティと脅威モデル · 行動規範
- ライセンス:Apache-2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。