返回市场
开发运维-MCP-网页界面

开发运维-MCP-网页界面

作者:elevy999272 星标更新:2025-10-28

项目介绍

技术文档摘要

Open WebUI Kubernetes 集成

Docker Compose Kubernetes Open WebUI Ollama MCP Protocol Kind Helm kubectl License: MIT

TL;DR

使用自然语言与你的Kubernetes集群对话!

该项目连接了OpenWebUI与Kubernetes,让你可以通过对话式AI管理集群。你可以提出诸如“哪些Pod正在运行?”或“将我的部署扩展到5个副本”等问题,并立即获得结果。


目录


快速开始

一键安装:

./install.sh

已安装的组件:

  • Kind(Docker中的Kubernetes)
  • Open Web UI
  • Ollama
  • MCP桥接

成功安装后,你会看到: ✅ Docker Compose启动完成!

可用服务:

配置Open WebUI以使用MCP工具

配置Open-WebUI

在运行安装脚本后,你需要配置Open-WebUI以使用Kubernetes工具:

步骤1:访问Open-WebUI

  1. 打开浏览器并前往 http://localhost:3000
  2. 第一次访问时创建一个管理员账户
  3. 使用新账户登录

步骤2:添加MCP桥接工具服务器

  1. 点击你的个人资料图标(右上角)
  2. 前往设置
  3. 导航至管理面板工具
  4. 点击 "+ 添加工具服务器"
  5. 输入以下详细信息:
    • 名称Kubernetes工具
    • URLhttp://mcpo:9000
    • 描述通过kubectl和helm管理Kubernetes
  6. 点击 "添加"

<img src="images/openwebui-config-tool.png">

步骤3:添加模型连接

配置你的AI模型连接——使用本地Ollama或添加远程连接:

  1. 设置中,前往管理面板连接
  2. 对于本地Ollama(推荐):
    • 本地Ollama服务器应自动检测
    • 验证连接到 http://ollama:11434
  3. 对于远程连接(可选):
    • 添加OpenAI、Anthropic或其他模型提供商
    • 根据需要配置API密钥和端点
<img src="./images/openwebui-connections.png">

步骤4:验证工具集成

  1. 返回到聊天界面
  2. 查找聊天输入区域中的工具图标(🔧)
  3. 你应该能看到可用的工具,如:
    • kubectl_get - 列出Kubernetes资源
    • kubectl_apply - 应用清单
    • kubectl_describe - 描述资源
    • helm_install - 安装Helm图表
    • 更多...

步骤5:测试集成

尝试询问这些问题以验证一切是否正常工作(复制粘贴到聊天框):

复制并粘贴这些查询:

kube-system命名空间中有哪些Pod正在运行?
显示默认命名空间中的所有服务
列出所有命名空间中的所有部署
创建一个名为production的新命名空间
使用Helm在jenkins命名空间中安装Jenkins

配置故障排除

如果工具没有出现:

  • 检查MCP桥接是否正在运行:curl http://localhost:9000/health
  • 验证工具服务器URL是否准确:http://mcpo:9000
  • 重启Open-WebUI:docker-compose restart open-webui

如果你遇到连接错误:

  • 确保所有容器都在运行:docker-compose ps
  • 检查容器日志:docker-compose logs mcpo
  • 验证容器之间的网络连通性

然后打开 http://localhost:3000 并开始与你的集群对话!

示例查询:

  • "kube-system中有哪些Pod正在运行?"
  • "显示默认命名空间中的所有服务"
  • "创建一个名为production的新命名空间"
  • "使用Helm在jenkins命名空间中安装Jenkins"

架构概述

此项目通过桥梁架构将Open WebUI与Kubernetes管理能力集成,连接多个组件以提供AI驱动的Kubernetes操作。

架构图

graph TB

    subgraph "外部AI服务"
        Gemini[Google Gemini<br/>外部API]
    end
    
    subgraph "用户界面"
        User[用户]
    end
    
    subgraph "UI层"
        OpenWebUI[Open WebUI<br/>端口:3000]
        Ollama[Ollama<br/>LLM服务器<br/>端口:11434]
    end
    
    subgraph "桥梁层"
        MCP-Bridge[MCP-Bridge<br/>OpenAPI桥梁<br/>端口:9000]
    end
    
    subgraph "目标基础设施"
        K8s[Kubernetes集群<br/>kubectl, helm, istioctl]
    end
    
    subgraph "配置"
        KubeConfig[kubeconfig<br/>./kube/config]
    end
    


    %% 用户交互
    User -->|聊天&命令| OpenWebUI
    
    %% AI层连接
    OpenWebUI -->|LLM请求| Ollama
    OpenWebUI -.->|外部API调用| Gemini
    OpenWebUI -->|工具调用<br/>OpenAPI/REST| MCP-Bridge
    
    %% 桥梁层到Kubernetes
    MCP-Bridge -->|kubectl命令| K8s
    MCP-Bridge -->|helm操作| K8s
    MCP-Bridge -->|istioctl命令| K8s
    
    %% 配置
    KubeConfig -.->|挂载卷| MCP-Bridge
    
    %% 样式
    classDef userLayer fill:#e1f5fe
    classDef aiLayer fill:#f3e5f5
    classDef externalLayer fill:#fff8e1
   classDef bridgeLayer fill:#fff3e0
    classDef mcpLayer fill:#e8f5e8
    classDef k8sLayer fill:#fce4ec
    classDef configLayer fill:#f1f8e9
    
    class User userLayer
    class OpenWebUI,Ollama aiLayer
    class Gemini,OpenAI,Anthropic externalLayer
    class MCP-Bridge bridgeLayer
    class K8s k8sLayer
    class KubeConfig configLayer

数据流

  1. 用户查询:用户在Open WebUI中提出一个与Kubernetes相关的问题
  2. AI处理:Ollama处理查询并确定是否需要工具
  3. 工具选择:Open WebUI识别适当的kubectl_get工具
  4. API调用:Open WebUI向MCPO桥梁发出REST API调用
  5. 协议转换:MCPO将REST调用转换为MCP协议
  6. 响应链:结果通过相同的链返回给用户

网络架构

graph LR
    subgraph "Docker网络:mcp-lab-network"
        subgraph "外部访问"
            Host[主机机器<br/>localhost:3000<br/>localhost:9000]
        end
        
        subgraph "内部服务"
            OW[open-webui:8080]
            MC[mcpo:9000]
            K8S[Kubernetes:6443]
            OL[ollama:11434]
        end
    end
    
    Host -->|端口3000| OW
    Host -->|端口9000| MC
    OW --> OL
    OW --> MC
    MC --> K8S

📂 仓库结构

openwebui-k8s-bridge/
├── mcp-bridge/          # 桥接服务代码
├── scripts/             # 设置和实用脚本
├── tests/               # 测试脚本和示例
├── docs/                # 文档
├── kube/               # Kubernetes配置
├── docker-compose.yml  # 完整堆栈设置
└── README.md           # 主要文档

组件

1. Open WebUI

  • 目的:基于Web的AI交互聊天界面
  • 端口:3000
  • 角色:提供用户界面并协调具有工具调用功能的AI对话
  • 关键特性
    • 自然语言Kubernetes查询的聊天界面
    • 外部API调用的工具服务器集成
    • 模型管理和对话历史记录

2. Ollama

  • 目的:本地LLM服务器
  • 端口:11434
  • 角色:提供理解用户查询并生成响应的AI语言模型(llama3.2:latest)
  • 关键特性
    • 本地模型托管
    • 函数调用能力
    • 与Open WebUI集成

3. MCP桥接

  • 目的:OpenAPI和MCP之间的协议桥接
  • 端口:9000
  • 角色:将来自Open WebUI的REST API调用转换为MCP协议调用
  • 关键特性
    • 为Open WebUI生成OpenAPI规范
    • REST到MCP协议转换
    • 工具参数验证和格式化

4 Kubernetes集群

  • 目的:管理操作的目标基础设施
  • 角色:实际被管理的Kubernetes集群
  • 访问:通过作为卷挂载的kubeconfig

使用方法

配置完成后,你可以提出关于你的Kubernetes集群的自然语言问题:

  • "kube-system命名空间中有哪些Pod正在运行?"
  • "显示默认命名空间中的所有服务"
  • "列出所有命名空间中的所有部署"
  • "获取nginx Pod的日志"
  • 使用Helm从repo https://argoproj.github.io/argo-helm 安装argocd

<img src="./images/kubectl_pods_query_01.png"> --- <img src="./images/helm_install_argo.png"> --- <img src="./images/open-webui-install-argocd.png">

AI将自动使用适当的Kubernetes工具执行命令并提供格式化的响应。


在Google Cloud Shell中打开

你可以直接在Google Cloud Shell中打开此仓库以开始探索示例:

在Google Cloud Shell中打开


联系方式

如有疑问或反馈,请随时联系: