Kubernetes自然语言管理工具

Open WebUI与Kubernetes集成,通过自然语言对话管理集群,支持kubectl和Helm命令执行。

  • by elevy99927
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 elevy99927/devops-mcp-webui

使用说明

开放WebUI Kubernetes集成

太长,读不下去了

使用自然语言与您的Kubernetes集群聊天!

该项目将OpenWebUI连接到Kubernetes,让您通过对话式人工智能管理集群。问“什么Pod在运行?”或“将我的部署扩展到5个副本”等问题,并立即获得结果。


目录


快速开始

一个命令设置:

./install.sh

已安装的组件:

  • Kind(Docker中的Kubernetes)
  • 打开Web UI
  • 奥拉玛
  • MCP电桥

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

服务地点:

配置Open WebUI以使用MCP工具

配置打开WebUI

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

步骤1:访问打开的WebUI

  1. 打开浏览器并转到 http://localhost:3000
  2. 创建管理员帐户 首次访问
  3. 登录 使用您的新帐户

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

  1. 点击您的 配置文件图标 (右上)
  2. 首选 设置
  3. 引导到 管理面板 → 工具
  4. 点击 “+添加工具服务器”
  5. 输入以下详细信息:
    • 名字: Kubernetes Tools
    • 统一资源定位符: http://mcpo:9000
    • 描述: Kubernetes management via kubectl and helm
  6. 点击 “添加”


步骤3:向模型添加连接

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

  1. 在 设置首选 管理面板 → 连接
  2. 对于当地Ollama (推荐):
    • 应自动检测本地Ollama服务器
    • 验证与的连接 http://ollama:11434
  3. 用于远程连接 (可选):
    • 添加OpenAI、Anthropic或其他模型提供者
    • 根据需要配置API密钥和终结点

步骤4:验证工具集成

  1. 回到 聊天界面
  2. 寻找 工具图标 (🔧) 在聊天输入区
  3. 您应该看到可用的工具,例如:
    • kubectl_get -列出Kubernetes资源
    • kubectl_apply -应用清单
    • kubectl_describe -描述资源
    • helm_install -安装Helm图表
    • 还有更多。..

步骤5:测试集成

试着问这些问题来验证一切正常(复制并粘贴到聊天中):

复制并粘贴这些查询:

What pods are running in the kube-system namespace?
Show me all services in the default namespace
List all deployments across all namespaces
Create a new namespace called production
Install Jenkins using Helm in the jenkins namespace

故障排除配置

如果工具未出现:

  • 检查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系统中运行着哪些Pod?”
  • “显示默认命名空间中的所有服务”
  • “创建一个名为product的新命名空间”
  • “在Jenkins命名空间中使用Helm安装Jenkins”

架构概述

该项目通过一个桥接架构将Open WebUI与Kubernetes管理功能集成在一起,该架构连接了多个组件,以提供AI驱动的Kubernetes操作。

架构图

graph TB

    subgraph "External AI Services"
        Gemini[Google Gemini<br/>External API]
    end
    
    subgraph "User Interface"
        User[User]
    end
    
    subgraph "UI Layer"
        OpenWebUI[Open WebUI<br/>Port: 3000]
        Ollama[Ollama<br/>LLM Server<br/>Port: 11434]
    end
    
    subgraph "Bridge Layer"
        MCP-Bridge[MCP-Bridge<br/>OpenAPI Bridge<br/>Port: 9000]
    end
    
    subgraph "Target Infrastructure"
        K8s[Kubernetes Cluster<br/>kubectl, helm, istioctl]
    end
    
    subgraph "Configuration"
        KubeConfig[kubeconfig<br/>./kube/config]
    end
    


    %% User interactions
    User -->|Chat & Commands| OpenWebUI
    
    %% AI Layer connections
    OpenWebUI -->|LLM Requests| Ollama
    OpenWebUI -.->|External API Calls| Gemini
    OpenWebUI -->|Tool Calls<br/>OpenAPI/REST| MCP-Bridge
    
    %% Bridge Layer to Kubernetes
    MCP-Bridge -->|kubectl commands| K8s
    MCP-Bridge -->|helm operations| K8s
    MCP-Bridge -->|istioctl commands| K8s
    
    %% Configuration
    KubeConfig -.->|Mounted Volume| MCP-Bridge
    
    %% Styling
    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. 人工智能处理:Ollama处理查询并确定是否需要工具
  3. 工具选择:Open WebUI标识相应的kubectl_get工具
  4. API调用:Open WebUI对MCPO桥进行REST API调用
  5. 协议转换:MCPO将REST调用转换为MCP协议
  6. 响应链:结果通过同一链返回给用户

网络体系结构

graph LR
    subgraph "Docker Network: mcp-lab-network"
        subgraph "External Access"
            Host[Host Machine<br/>localhost:3000<br/>localhost:9000]
        end
        
        subgraph "Internal Services"
            OW[open-webui:8080]
            MC[mcpo:9000]
            K8S[Kubernetes:6443]
            OL[ollama:11434]
        end
    end
    
    Host -->|Port 3000| OW
    Host -->|Port 9000| MC
    OW --> OL
    OW --> MC
    MC --> K8S

📂 存储库结构

openwebui-k8s-bridge/
├── mcp-bridge/          # Bridge service code
├── scripts/             # Setup and utility scripts
├── tests/               # Test scripts and examples
├── docs/                # Documentation
├── kube/               # Kubernetes configuration
├── docker-compose.yml  # Complete stack setup
└── README.md           # Main documentation

组件

1. 打开WebUI

  • 目的:用于人工智能交互的基于网络的聊天界面
  • 端口: 3000
  • 角色:提供用户界面,并利用工具调用功能协调人工智能对话
  • 主要特点:
    • 用于自然语言Kubernetes查询的聊天界面
    • 用于外部API调用的工具服务器集成
    • 模型管理和对话历史

2. 奥拉玛

  • 目的:本地LLM服务器
  • 端口: 11434
  • 角色:提供用于理解用户查询和生成响应的AI语言模型(llama3.2:最新版本)
  • 主要特点:
    • 本地模型托管
    • 函数调用能力
    • 与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安装argocdhttps://argoproj.github.io/argo-helm

--- ---

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

在Google Cloud Shell中打开

您可以直接在Google Cloud Shell中打开此存储库,开始探索示例:


联系

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