用于部署到Kubernetes的MCP服务器
本演练演示如何使用 app-deployer 管理Kubernetes应用程序。
它支持两种部署模式:
deploy-image从容器映像生成Kubernetes清单,并将其推送到GitOps存储库。deploy-helmchart推送指向OCI Helm图的ArgoCD应用程序定义。
这两种模式都使用相同的GitOps工作流:服务器将ArgoCD应用程序定义写入您的git存储库,ArgoCD将其提取并部署到您的集群中。
先决条件
- Kubernetes集群(和
kubeconfig) - GitOps的GitHub存储库
- 群集上安装了ArgoCD
- ArgoCD存储库配置了所需的凭据,以便在使用时提取Helm OCI映像
deploy-helmchart模式。 - ArgoCD存储库配置为从GitHub存储库读取,服务器将在其中推送清单和应用程序定义。
GITHUB_TOKEN具有repo访问权限
安装
- 构建服务器:
go build -o app-deployer .配置
将服务器添加到MCP客户端配置中(例如。, claude_desktop_config.json):
{
"mcpServers": {
"app-deployer": {
"command": "/absolute/path/to/app-deployer",
"args": [
"--kubeconfig", "/path/to/kubeconfig",
"--github-token", "YOUR_GITHUB_TOKEN",
"--github-url", "https://github.com/your/repo",
"--namespace", "applications", // Target namespace for apps
"--domain", "example.com" // Base domain for Ingress
]
}
}
}HTTP传输(流式HTTP)
默认情况下,服务器通过stdio运行。要通过HTTP公开它,请传递 --http 以及密码:
./app-deployer \
--kubeconfig /path/to/kubeconfig \
--github-token YOUR_GITHUB_TOKEN \
--github-url https://github.com/your/repo \
--http :8080 \
--http-password "$MCP_HTTP_PASSWORD" \
--http-path /mcp旗帜:
--http:监听地址(例如。:8080).省略使用stdio。--http-password:每次请求都需要携带令牌。也可以通过以下方式提供MCP_HTTP_PASSWORD有人是。- `--http-path
:MCP端点的URL路径(默认为 /mcp`).
客户端必须以以下方式发送密码 Authorization: Bearer (或 X-MCP-Password: ).未经授权的请求得到 401.
配置Claude Code以使用HTTP服务器
通过添加 claude mcp CLI:
claude mcp add --transport http app-deployer https://your-host:8080/mcp \
--header "Authorization: Bearer $MCP_HTTP_PASSWORD"或者直接添加到 ~/.claude.json (或 .mcp.json 在你的项目中) mcpServers:
{
"mcpServers": {
"app-deployer": {
"type": "http",
"url": "https://your-host:8080/mcp",
"headers": {
"Authorization": "Bearer YOUR_PASSWORD"
}
}
}
}仅供本地使用,请将URL指向 http://127.0.0.1:8080/mcp对于网络上可访问的任何内容,在服务器前面终止TLS(例如在入口后面)——承载令牌在每次请求时都会发送。
用法
1.从映像部署应用程序
使用 deploy-image 创建新部署的工具。
工具: 部署映像 论据:
app_name:“我的应用程序”image:“nginx:最新”
这将:
- 在Git中生成Kubernetes清单。
- 在Git中创建ArgoCD应用程序。
- 将更改推送到存储库。ArgoCD随后应同步应用程序。
2.从OCI Helm Chart部署应用程序
使用 deploy-helmchart 该工具用于创建安装OCI Helm chart的ArgoCD应用程序。
工具: 部署头盔图 论据:
app_name:“我的应用程序”chart: "oci://registry-1.docker.io/bitnamicharts/nginx:15.9.0"
这将:
- 在Git中创建一个指向OCI图表的ArgoCD应用程序。
- 在生成的ArgoCD应用程序中覆盖这些Helm值:
- ingress.name = app_name - ingress.host = app_name.domain
- 将更改推送到存储库。ArgoCD随后应同步应用程序。
笔记:
- 图表参数必须是包含版本标记的完整OCI图表引用。
- ArgoCD希望OCI仓库URL没有
oci://在生成的清单中添加前缀,因此服务器会相应地重写输入。
3.检查状态
使用状态工具检查应用程序是否已部署且运行正常。
工具: 状态 论据:
app_name:“我的应用程序”
输出将显示:
- Git清单状态
- ArgoCD应用程序状态(运行状况/同步)
- 入口可达性
对于Helm chart部署,状态仍然按名称检查ArgoCD应用程序。它可能会报告生成的清单在Git中不存在,因为Helm模式只写入ArgoCD应用程序清单。
4.销毁应用程序
使用销毁工具删除应用程序。
工具: 摧毁 论据:
app_name:“我的应用程序”
这将从Git中删除清单,触发ArgoCD修剪资源。
5.更新应用程序
使用更新工具根据以后的资源更新应用程序。
工具: 更新 论据:
app_name:“我的应用程序”
这将触发部署资源的重启,从而使其获取最新映像。
update 仍然适用于使用创建的应用程序 deploy-image,其中部署以以下名称命名 app_name 存在于目标命名空间中。
E2E测试
如果您设置了环境,则可以运行端到端测试:
export KUBECONFIG=~/.kube/config
export GITHUB_TOKEN=...
export GITHUB_URL=...
export E2E_TEST=true
go test -v .