Kom - Kubernetes Operations Manager

Kom - Kubernetes Operations Manager

kom 是一个用于 Kubernetes 操作的工具,SDK级的kubectl、client-go的使用封装。并且支持作为管理k8s 的 MCP server。它提供了一系列功能来管理 Kubernetes 资源,包括创建、更新、删除和获取资源,甚至使用SQL查询k8s资源。这个项目支持多种 Kubernetes 资源类型的操作,并能够处理自定义资源定义(CRD)。通过使用 kom,你可以轻松地进行资源的增删改查和日志获取以及操作POD内文件等动作。

Kom Quick Start Guide

简介

Kom 是一个用于 Kubernetes 操作的 SDK 级工具,封装了 kubectl 和 client-go 的功能。通过 Kom,您可以轻松管理 Kubernetes 资源,支持 SQL 查询,多集群操作,以及 MCP 服务器功能。

特点

  • 简单易用的 API,支持链式调用
  • 多集群和跨命名空间支持
  • CRD 资源操作支持
  • POD 内文件操作
  • SQL 查询 K8s 资源
  • 支持查询缓存提升性能
  • MCP 功能支持

快速开始

1. 安装

import (
    "github.com/weibaohui/kom"
    "github.com/weibaohui/kom/callbacks"
)

2. 基本配置

// 注册回调(必须先执行)
callbacks.RegisterInit()

// 注册集群
defaultKubeConfig := os.Getenv("KUBECONFIG")
if defaultKubeConfig == "" {
    defaultKubeConfig = filepath.Join(homedir.HomeDir(), ".kube", "config")
}

// 注册集群
_, _ = kom.Clusters().RegisterInCluster()
_, _ = kom.Clusters().RegisterByPathWithID(defaultKubeConfig, "default")
kom.Clusters().Show()

3. 常用操作示例

查询资源

// 获取单个资源
var deployment v1.Deployment
err := kom.DefaultCluster().Resource(&deployment).Namespace("default").Name("nginx").Get(&deployment).Error

// 查询资源列表
var deployments []v1.Deployment
err := kom.DefaultCluster().Resource(&deployment).Namespace("default").List(&deployments).Error

// 跨命名空间查询
err := kom.DefaultCluster().Resource(&deployment).Namespace("default", "kube-system").List(&deployments).Error

使用缓存提升性能

// 启用5秒缓存
err := kom.DefaultCluster().Resource(&item).WithCache(5 * time.Second).Get(&item).Error

创建资源

deployment := v1.Deployment{
    ObjectMeta: metav1.ObjectMeta{
        Name:      "nginx",
        Namespace: "default",
    },
    Spec: v1.DeploymentSpec{
        Template: corev1.PodTemplateSpec{
            Spec: corev1.PodSpec{
                Containers: []corev1.Container{
                    {Name: "test", Image: "nginx:1.14.2"},
                },
            },
        },
    },
}
err := kom.DefaultCluster().Resource(&deployment).Create(&deployment).Error

4. 多集群支持

// 注册多个集群
kom.Clusters().RegisterByPathWithID("/path/to/kubeconfig1", "cluster1")
kom.Clusters().RegisterByPathWithID("/path/to/kubeconfig2", "cluster2")

// 使用特定集群
err := kom.Cluster("cluster1").Resource(&deployment).Namespace("default").List(&deployments).Error

5. 启动 MCP 服务

// 一行代码启动MCP Server
mcp.RunMCPServer("kom mcp server", "0.0.1", 9096)

// 访问地址: http://IP:9096/sse

示例程序 k8m

k8m 是基于 kom 和 amis 实现的轻量级 Kubernetes 管理工具,支持多平台架构。

  1. https://github.com/weibaohui/k8m 下载最新版本
  2. 运行 ./k8m 命令启动
  3. 访问 http://127.0.0.1:3618

更多高级功能和详细文档,请访问 GitHub 仓库