mcpField
K
kubeleash

kubeleash

本地服务
github.com/kubeleash云与基础设施122 周前更新

关于 kubeleash

kubeleash 是本地 MCP 服务,通过按 Kubernetes 上下文划分的策略控制 AI Agent 对集群的访问。即使 kubeconfig 凭据权限很高,它也会额外执行允许与拒绝规则,并在调用抵达集群前拦截操作。

主要功能

  1. 01按 kube 上下文应用策略规则
  2. 02限制超出 kubeconfig 权限的访问
  3. 03拒绝 delete 和 exec 等破坏性动词
  4. 04提供适用于 Kubernetes 资源的通用工具
  5. 05将决策写入 JSON 审计日志

适用场景

  1. 01限制 Agent 在生产环境中仅能读取
  2. 02允许暂存环境拥有比生产更广的操作权限
  3. 03对 AI Agent 发起的 Kubernetes 操作设限

MCP 相关

通过 stdio 在本地运行,向 MCP 客户端提供八种 Kubernetes 工具,包括 list、get、apply、delete、logs、exec、scale 和 capabilities。每次调用都会先按策略检查,再访问集群。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kubeleash-kubeleash": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/kubeleash/kubeleash:0.3.0"
]
}
}
}
启动命令docker run -i --rm ghcr.io/kubeleash/kubeleash:0.3.0

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/kubeleash/kubeleash:0.3.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

kubeleash 标志

kubeleash

将权限过大的 kubeconfig 指向它——它依然无法摧毁生产环境。

CI Go Report Card OpenSSF Scorecard 许可证 发布版本

为集群上的 AI Agent 提供安全护栏。 kubeleash 是一个用于 Kubernetes 的本地 MCP 服务,其差异化优势在于采用类似 RBAC 的、按上下文限定范围的访问控制。将它指向一个 kubeconfig——即使该配置拥有集群管理员权限——本地策略文件也会限制 Agent 实际可执行的操作,并按 kube 上下文分别实施;破坏性操作会在任何调用到达集群之前受到限制。

将 kubeleash 添加到 AI 客户端

添加到 VS Code   添加到 Cursor   Claude Code / Desktop

安装会启动本地 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 服务器之间不应有任何东西,除了这条牵引绳。

项目

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。