关于 kubeleash
kubeleash 是本地 MCP 服务,通过按 Kubernetes 上下文划分的策略控制 AI Agent 对集群的访问。即使 kubeconfig 凭据权限很高,它也会额外执行允许与拒绝规则,并在调用抵达集群前拦截操作。
主要功能
- 01按 kube 上下文应用策略规则
- 02限制超出 kubeconfig 权限的访问
- 03拒绝 delete 和 exec 等破坏性动词
- 04提供适用于 Kubernetes 资源的通用工具
- 05将决策写入 JSON 审计日志
适用场景
- 01限制 Agent 在生产环境中仅能读取
- 02允许暂存环境拥有比生产更广的操作权限
- 03对 AI Agent 发起的 Kubernetes 操作设限
MCP 相关
通过 stdio 在本地运行,向 MCP 客户端提供八种 Kubernetes 工具,包括 list、get、apply、delete、logs、exec、scale 和 capabilities。每次调用都会先按策略检查,再访问集群。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 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 Agent 提供安全护栏。 kubeleash 是一个用于 Kubernetes 的本地 MCP 服务,其差异化优势在于采用类似 RBAC 的、按上下文限定范围的访问控制。将它指向一个 kubeconfig——即使该配置拥有集群管理员权限——本地策略文件也会限制 Agent 实际可执行的操作,并按 kube 上下文分别实施;破坏性操作会在任何调用到达集群之前受到限制。
将 kubeleash 添加到 AI 客户端
安装会启动本地 kubeleash 二进制文件——可通过 brew、go install 或容器获取(参见安装)。VS Code 支持一键安装;Cursor 和 Claude 会打开设置步骤(GitHub 会屏蔽 cursor:// 一键链接,因此这里提供复制粘贴方式)。
为什么要用 kubeleash
大多数 Kubernetes MCP 服务会完整继承 kubeconfig 的权限——凭据授予什么权限,Agent 就能执行什么操作。kubeleash 增加了三项原生 RBAC 无法满足此场景的能力:
- 将 Agent 的权限与凭据权限分开限制。 有效访问权限始终为
kubeconfig-grants ∩ policy-allows——kubeleash 只会收紧权限。 - 按上下文实施安全护栏。 策略可按上下文变化(生产环境、预发布环境与开发环境);原生 RBAC 则按集群设置。
- 阻止破坏性动词(
delete/exec/…),以防范 Agent 出错和提示词注入。
kubeleash 如何实施限制
kubeleash 只管理经由它路由的调用。如果它是 Agent 访问集群的唯一途径,就能提供强制保障。如果 Agent 还能访问 shell(直接使用 kubectl、oc 或 API),就可以绕过它。因此,在启用了 shell 的助手中,kubeleash 仅提供建议——请搭配 using-kubeleash 技能使用;该技能会指示 Agent 在 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 和容器安装方式见安装),然后在不接触任何集群的情况下测试策略:
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 客户端连接到它(见下文)。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)。审计日志以 JSON 格式写入 stderr(stdout 是 MCP 传输通道)。 |
--version | 打印版本、提交记录和构建日期。 |
安装
所有安装渠道都让 kubeleash 在本地通过 stdio 运行——客户端启动二进制文件;不会托管任何内容。kubeleash 已列入官方 MCP Registry,名称为 io.github.kubeleash/kubeleash,因此支持 Registry 的客户端也可以发现它。
一键安装
顶部的 添加到 Cursor / VS Code 按钮是最快捷的方式(需要将 kubeleash 二进制文件放在 PATH 中——见手动安装)。其他客户端:
Claude Code——此仓库本身就是一个插件市场:
/plugin marketplace add kubeleash/kubeleash
/plugin install kubeleash@kubeleash
无需单独安装:首次运行时,插件会使用 PATH 中已有的 kubeleash;如果没有,则会下载匹配的发行版二进制文件(并验证其校验和)并缓存。
默认安全——无需先编写策略:如果 ~/.kubeleash/policy.yaml 中没有策略,插件会在首次运行时在那里写入一个只读入门策略(允许 get/list/watch,拒绝 exec/delete)。请检查并放宽策略以授予更多访问权限。(这项便利功能仅适用于插件;原始二进制文件仍然要求显式指定 --policy,否则会拒绝启动。)
插件还附带两个技能——using-kubeleash(说明 Agent 应如何通过受控工具查询并执行操作)和 authoring-kubeleash-policy(说明如何编写策略)——让 Agent 理解防护措施,而不只是工具列表。
Claude Desktop——从发行版页面下载 kubeleash.mcpb 并双击;该安装包包含二进制文件,并会提示你提供策略和 kubeconfig。
Cursor / VS Code 原始深度链接 URL(如果按钮无响应)
Cursor(无法提示输入——之后请在 设置 → 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 提供 8 个通用且与 GVK 无关的工具(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 服务器通信——它有意不提供远程或托管连接器,以免您的集群凭据经由其他服务传递。这是一个特性,而非缺陷:您会使用特权凭据在真实集群上运行它,因此 Agent 与 API 服务器之间不应有任何东西,除了这条牵引绳。
项目
- 设计 · 贡献指南 · 安全与威胁模型 · 行为准则
- 许可证:Apache-2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。