GCP OpenShift MCP服务器
一个智能模型上下文协议(MCP)服务器,用于管理谷歌云平台(GCP)上的OpenShift集群。
特性
- 创建OpenShift集群:在GCP上部署具有自定义名称和配置的OpenShift集群
- 删除群集:清理集群和所有相关的GCP资源
- 群集管理:获取状态、列出集群并检索kubeconfigs
- 潜艇云准备:在GCP、AWS、Azure和OpenStack上为Submariner准备云基础设施(防火墙规则、网关节点)
- Kubeconfig管理:重命名上下文/用户并合并多个kubeconfigs以避免冲突
- 潜艇集成:与Submariner MCP服务器无缝协作,实现多集群联网
- 可重复使用的:接受自定义集群名称作为灵活部署的参数
先决条件
在使用此MCP服务器之前,请确保已安装以下工具:
- openshift安装 -OpenShift安装程序CLI
- 下载地址:https://console.redhat.com/openshift/downloads - 验证: openshift-install version
- gcloud -谷歌云SDK
- 安装:https://cloud.google.com/sdk/docs/install - 配置: gcloud auth login 和 gcloud config set project YOUR_PROJECT_ID - 验证: gcloud version
- kubectl 的 -Kubernetes命令行界面
- 安装:https://kubernetes.io/docs/tasks/tools/ - 验证: kubectl version --client
- subctl -Submariner CLI(用于cloud_prepare操作)
- 安装:https://submariner.io/operations/deployment/subctl/ - 验证: subctl version
- Python 3.10+
- 验证: python3 --version
- SSH密钥对
- 生成: ssh-keygen -t rsa -b 4096
安装
- 克隆或导航到存储库:
cd gcp-openshift-mcp-server- 安装Python依赖项:
pip install -r requirements.txt- 确保配置了GCP凭据:
gcloud auth application-default login- 设置拉取密码 (必填-一次性设置):
# Download your pull-secret from https://console.redhat.com/openshift/install/gcp/installer-provisioned
# Then copy it to the required location:
mkdir -p ~/.config/openshift
cp ~/Downloads/pull-secret.json ~/.config/openshift/pull-secret.json
chmod 600 ~/.config/openshift/pull-secret.jsonMCP服务器将自动从该位置读取拉取密钥。您永远不需要将其作为参数传递。
用法
运行服务器
启动MCP服务器:
python server.py该服务器将作为基于stdio的MCP服务器运行,并可以与MCP客户端集成。
可用工具
1.检查_先决条件
检查是否安装了所有必需的工具。
请求示例:
{
"name": "check_prerequisites",
"arguments": {}
}示例响应:
{
"success": true,
"checks": {
"openshift_install": {
"installed": true,
"version": "openshift-install 4.14.0"
},
"gcloud": {
"installed": true,
"version": "Google Cloud SDK 450.0.0"
},
"kubectl": {
"installed": true
}
},
"message": "All prerequisites met"
}2.创建集群
使用自定义名称在GCP上创建新的OpenShift集群。从以下位置自动读取pull secret ~/.config/openshift/pull-secret.json.
参数:
cluster_name(必填):集群的唯一名称(例如“submariner-gcp-1”)ssh_public_key(必需):用于群集访问的SSH公钥region(可选):GCP区域,默认值:“us-east1”base_domain(可选):基本域,默认值:“devcluster.openshift.com”worker_replicas(可选):工作节点数,默认值:3master_replicas(可选):主节点数量,默认值:3network_type(可选):网络插件,默认:“OVNKubernetes”
请求示例:
{
"name": "create_cluster",
"arguments": {
"cluster_name": "submariner-gcp-1",
"ssh_public_key": "ssh-rsa AAAAB3...",
"region": "us-east1",
"worker_replicas": 3,
"master_replicas": 3
}
}示例响应:
{
"success": true,
"cluster_name": "submariner-gcp-1",
"cluster_dir": "./clusters/submariner-gcp-1",
"kubeconfig_path": "./clusters/submariner-gcp-1/auth/kubeconfig",
"message": "Cluster submariner-gcp-1 created successfully"
}3.删除集群
删除OpenShift集群并清理所有GCP资源。
参数:
cluster_name(必填):要删除的群集的名称
请求示例:
{
"name": "delete_cluster",
"arguments": {
"cluster_name": "submariner-gcp-1"
}
}示例响应:
{
"success": true,
"cluster_name": "submariner-gcp-1",
"message": "Cluster submariner-gcp-1 deleted successfully"
}4.获取集群状态
获取集群的详细状态。
参数:
cluster_name(必填):集群名称
请求示例:
{
"name": "get_cluster_status",
"arguments": {
"cluster_name": "submariner-gcp-1"
}
}示例响应:
{
"success": true,
"cluster_name": "submariner-gcp-1",
"status": "created",
"cluster_dir": "./clusters/submariner-gcp-1",
"kubeconfig_path": "./clusters/submariner-gcp-1/auth/kubeconfig",
"accessible": true,
"nodes": "NAME STATUS ROLES AGE VERSION\n...",
"region": "us-east1",
"base_domain": "devcluster.openshift.com"
}5.列表_集群
列出所有GCP OpenShift集群。
请求示例:
{
"name": "list_clusters",
"arguments": {}
}示例响应:
{
"success": true,
"clusters": [
{
"name": "submariner-gcp-1",
"status": "created",
"cluster_dir": "./clusters/submariner-gcp-1",
"region": "us-east1",
"kubeconfig_available": true
},
{
"name": "submariner-gcp-2",
"status": "created",
"cluster_dir": "./clusters/submariner-gcp-2",
"region": "us-east1",
"kubeconfig_available": true
}
],
"count": 2
}6.get_kubeconfig
获取集群的kubeconfig文件内容。
参数:
cluster_name(必填):集群名称
请求示例:
{
"name": "get_kubeconfig",
"arguments": {
"cluster_name": "submariner-gcp-1"
}
}示例响应:
{
"success": true,
"cluster_name": "submariner-gcp-1",
"kubeconfig_path": "./clusters/submariner-gcp-1/auth/kubeconfig",
"kubeconfig_content": "apiVersion: v1\nclusters:\n..."
}7.云_准备
为Submariner准备云基础设施 subctl cloud prepare. 这必须在将集群加入Submariner之前运行。 它配置防火墙规则、安全组、网关节点和其他特定于云的要求。
支持的云提供商: GCP、AWS、Azure、OpenStack
参数:
cluster_name(必填):要准备的集群名称cloud_provider(可选):云提供商类型(gcp、aws、azure、openstack),默认值:“gcp”
请求示例:
{
"name": "cloud_prepare",
"arguments": {
"cluster_name": "submariner-gcp-1",
"cloud_provider": "gcp"
}
}示例响应:
{
"success": true,
"cluster_name": "submariner-gcp-1",
"cloud_provider": "gcp",
"message": "Cloud infrastructure prepared successfully for submariner-gcp-1"
}它的作用:
- 创建专用网关计算机集
- 部署带有潜艇gw标签的网关节点
- 为IPsec配置GCP防火墙规则(UDP 500、4500、ESP协议)
- 准备潜艇隧道所需的基础设施
8.重命名库配置上下文
在集群的kubeconfig中重命名上下文和用户,以避免合并多个kubeconfig时发生冲突。在合并具有相同上下文/用户名(如“admin”)的kubeconfigs时,这一点至关重要。
参数:
cluster_name(必填):要重命名kubeconfig的集群的名称new_context_name(可选):新上下文名称(默认为“{cluster_name}-admin")new_user_name(可选):新用户名(默认为“{cluster_name}-admin")
请求示例:
{
"name": "rename_kubeconfig_context",
"arguments": {
"cluster_name": "submariner-gcp-1"
}
}示例响应:
{
"success": true,
"cluster_name": "submariner-gcp-1",
"old_context_name": "admin",
"new_context_name": "submariner-gcp-1-admin",
"old_user_name": "admin",
"new_user_name": "submariner-gcp-1-admin",
"message": "Successfully renamed context and user in kubeconfig for submariner-gcp-1"
}使用案例: 当你有多个带有kubeconfigs的集群,它们的上下文和用户名都是“admin”时,你需要在合并之前重命名它们以避免冲突。
9.合并_立方体配置
将多个集群中的kubeconfigs合并到一个文件中。这允许您从单个kubeconfig文件管理多个集群,并使用以下命令在它们之间切换 kubectl config use-context.
重要提示: 在合并之前,使用以下命令确保上下文和用户具有唯一的名称 rename_kubeconfig_context.
参数:
cluster_names(必需):要合并的群集名称列表output_path(可选):应保存合并的kubeconfig的路径(默认:“/tmp/merged kubeconfig.yaml”)
请求示例:
{
"name": "merge_kubeconfigs",
"arguments": {
"cluster_names": ["submariner-gcp-1", "submariner-gcp-2"],
"output_path": "/tmp/merged-kubeconfig.yaml"
}
}示例响应:
{
"success": true,
"cluster_names": ["submariner-gcp-1", "submariner-gcp-2"],
"output_path": "/tmp/merged-kubeconfig.yaml",
"message": "Successfully merged 2 kubeconfigs to /tmp/merged-kubeconfig.yaml"
}kubectl的用法:
export KUBECONFIG=/tmp/merged-kubeconfig.yaml
kubectl config get-contexts
kubectl config use-context submariner-gcp-2-admin
kubectl get nodes与潜艇MCP服务器集成
该服务器旨在与Submariner MCP服务器无缝协作,实现多集群联网。
工作流示例
- 创建两个集群:
// Create cluster 1
{
"name": "create_cluster",
"arguments": {
"cluster_name": "submariner-gcp-1",
"ssh_public_key": "ssh-rsa AAAAB3..."
}
}
// Create cluster 2
{
"name": "create_cluster",
"arguments": {
"cluster_name": "submariner-gcp-2",
"ssh_public_key": "ssh-rsa AAAAB3..."
}
}- 获取kubeconfigs:
// Get kubeconfig for cluster 1
{
"name": "get_kubeconfig",
"arguments": {
"cluster_name": "submariner-gcp-1"
}
}
// Get kubeconfig for cluster 2
{
"name": "get_kubeconfig",
"arguments": {
"cluster_name": "submariner-gcp-2"
}
}- 使用Submariner MCP服务器安装Submariner:
- 将kubeconfig内容与Submariner MCP服务器的 add_cluster 工具 - 遵循Submariner工作流程:分析CIDR、配置globalnet、部署代理、加入集群
建筑
目录结构
gcp-openshift-mcp-server/
├── server.py # Main MCP server
├── requirements.txt # Python dependencies
├── README.md # This file
└── clusters/ # Clusters directory
├── submariner-gcp-1/ # Cluster 1 directory
│ ├── install-config.yaml
│ ├── metadata.json
│ ├── auth/
│ │ └── kubeconfig
│ └── .openshift_install.log
└── submariner-gcp-2/ # Cluster 2 directory
├── install-config.yaml
├── metadata.json
├── auth/
│ └── kubeconfig
└── .openshift_install.log集群生命周期
- 创建:集群正在通过openshift安装进行配置
- 创建:集群已准备就绪,kubeconfig可用
- 失败:群集创建失败
- 删除:群集正在被销毁
错误处理
服务器为常见问题提供详细的错误消息:
- 缺少先决条件(未安装工具)
- 重复的群集名称
- 未找到群集
- Kubeconfig不可用
- GCP身份验证问题
- 群集创建/删除失败
日志记录
服务器记录所有操作以帮助调试:
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)故障排除
群集创建失败
- 检查GCP凭据:
gcloud auth list - 验证项目ID:
gcloud config get-value project - 检查GCP控制台中的配额限制
- 审查
.openshift_install.log在集群目录中
未找到Kubeconfig
- 群集创建可能仍在进行中
- 使用检查群集状态
get_cluster_status - 查看安装日志
先决条件检查失败
- 确保所有必需的工具都在PATH中
- 验证安装:
openshift-install version,gcloud version,kubectl version
贡献
要扩展此服务器,请执行以下操作:
- 在中添加新工具
@app.list_tools()装饰器 - 在中实现处理程序
@app.call_tool()函数 - 向添加方法
GCPOpenShiftManager类
许可证
这是OpenShift开发工具包的一部分。
支持
关于以下问题:
- OpenShift安装:https://docs.openshift.com/
- GCP:https://cloud.google.com/docs
- MCP协议:https://github.com/anthropics/mcp
版本
当前版本:1.1.1
更新日志
1.1.1 (2025-11-03)
- 修复了deploy_submariner_full中的关键错误:添加了在云准备后等待网关节点准备就绪
- 在继续进行潜艇加入操作之前,网关节点现在已被验证为就绪
- 在网关节点仍在配置时防止加入失败
- 改进了网关节点就绪检查的错误处理和日志记录
1.1.0 (2025-10-29)
- 添加
cloud_prepareSubmariner基础设施准备工具(GCP、AWS、Azure、OpenStack) - 添加
rename_kubeconfig_context重命名上下文和用户以避免冲突的工具 - 添加
merge_kubeconfigs将多个kubeconfigs合并到一个文件中的工具 - 增强的README,包含所有新工具的详细文档
- 改进了多集群管理功能
1.0.0 (2025-10-29)
- 初始版本
- 支持创建和删除GCP OpenShift集群
- 与Submariner MCP服务器集成
- 集群状态和kubeconfig检索
