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 管理工具,支持多平台架构。
- 从 https://github.com/weibaohui/k8m 下载最新版本
- 运行
./k8m
命令启动 - 访问 http://127.0.0.1:3618
更多高级功能和详细文档,请访问 GitHub 仓库。