# krm **Repository Path**: GoProgect/krm ## Basic Information - **Project Name**: krm - **Description**: k8s资源管理平台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-06-25 - **Last Updated**: 2025-06-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Kubernetes资源管理平台 ## 🚀 项目概述 本项目是唐唐基于Kubernetes官方client-go SDK深度开发的集群管理平台项目。本项目充分利用client-go的强大能力,构建了一套完整的Kubernetes资源管理RESTful API体系,提供了比原生kubectl更友好、更符合企业需求的管理接口。 ### ✨ 核心特点: - 基于Kubernetes官方client-go SDK构建,确保与K8s API的完美兼容 - 采用标准的Informer/Workqueue机制实现高效资源监听 - 封装了完整的RESTClient操作接口,支持所有主流Kubernetes资源类型 - 内置高性能缓存层,显著降低API Server压力 - 提供符合企业级规范的认证授权体系 ## 🛠️ 功能特性 - 支持管理多种Kubernetes资源类型: - 🏗️ 工作负载:Deployment, StatefulSet, DaemonSet, CronJob, Pod - ⚙️ 配置:ConfigMap, Secret - 🌐 网络:Service, Ingress - 💾 存储:PersistentVolume, PersistentVolumeClaim, StorageClass - 🖥️ 集群:Node, Namespace - 提供完整的CRUD操作接口 - � 支持JWT认证授权 (待开发) - � 详细的日志记录 ## � 目录结构 ``` . ├── � config/ # 🛠️ 配置文件目录 │ ├── ⚙️ config.go # 配置管理主文件 │ └── � meta.kubeconfig # Kubernetes集群配置 ├── 🎮 controllers/ # 🕹️ 控制器层 │ ├── 🔐 auth/ # 认证相关控制器 │ ├── 🌐 cluster/ # 集群管理控制器 │ ├── 📝 configmap/ # ConfigMap控制器 │ ├── ⏱️ cronjob/ # CronJob控制器 │ ├── 👹 daemonset/ # DaemonSet控制器 │ ├── � deployment/ # Deployment控制器 │ ├── 🌍 ingress/ # Ingress控制器 │ ├── �️ ingressclass/ # IngressClass控制器 │ ├── 🏢 namespace/ # Namespace控制器 │ ├── 🖥️ node/ # Node控制器 │ ├── � pod/ # Pod控制器 │ ├── � pv/ # PersistentVolume控制器 │ ├── 📦 pvc/ # PersistentVolumeClaim控制器 │ ├── ♻️ replicaset/ # ReplicaSet控制器 │ ├── 🤫 secret/ # Secret控制器 │ ├── � service/ # Service控制器 │ ├── 🏰 statefulset/ # StatefulSet控制器 │ ├── �️ storageclass/ # StorageClass控制器 │ ├── 🧰 tools/ # 工具类控制器 │ └── 🏁 controllers.go # 控制器初始化入口 ├── � middlewares/ # 中间件 │ └── ⛓️ middlewares.go # 中间件定义 ├── �️ models/ # 数据模型 │ └── 🏗️ models.go # 模型定义 ├── 🛣️ routers/ # 路由层 │ ├── � auth/ # 认证路由 │ ├── 🌐 cluster/ # 集群路由 │ ├── � configmap/ # ConfigMap路由 │ ├── ⏱️ cronjob/ # CronJob路由 │ ├── � daemonset/ # DaemonSet路由 │ ├── � deployment/ # Deployment路由 │ ├── 🌍 ingress/ # Ingress路由 │ ├── �️ ingressclass/ # IngressClass路由 │ ├── 🏢 namespace/ # Namespace路由 │ ├── 🖥️ node/ # Node路由 │ ├── 🐳 pod/ # Pod路由 │ ├── 💾 pv/ # PV路由 │ ├── 📦 pvc/ # PVC路由 │ ├── ♻️ replicaset/ # ReplicaSet路由 │ ├── 🤫 secret/ # Secret路由 │ ├── 🔌 service/ # Service路由 │ ├── 🏰 statefulset/ # StatefulSet路由 │ ├── 🗄️ storageclass/ # StorageClass路由 │ ├── 🧰 tools/ # 工具路由 │ └── 🚦 routers.go # 路由初始化入口 ├── 🧰 utils/ # 工具类 │ ├── 🔑 jwtutils/ # JWT工具包 │ ├── 📜 logs/ # 日志工具 │ └── 🛠️ utils.go # 通用工具函数 ├── 📦 go.mod # Go模块定义文件 ├── 🔍 go.sum # 依赖校验文件 ├── 🏁 main.go # 程序主入口 └── 📖 README.md # 项目文档 ``` ## 🔧 代码修改说明 ### 1. 修改kubeutils下的资源文件 需要在以下资源文件的Get方法中增加`c.Item = i`赋值: - 🚀 deployment.go - 🏰 statefulset.go - 👹 daemonset.go - ⏱️ cronjob.go - 其他类似资源文件 修改示例: ```go func (c *Deployment) Get(namespace, name string) (item interface{}, err error) { logs.Info(map[string]interface{}{"名称": name, "命名空间": namespace}, "查询Deployment详情") i, err := c.InstanceInterface.Deployments(namespace).Get(context.TODO(), name, v1.GetOptions{}) c.Item = i //需增加的,因为主文件调用了Item,而这里并没有赋值 i.APIVersion = "apps/v1" i.Kind = "Deployment" item = i return item, err } ``` ### 2. 修改kubeutils下的pod.go文件 需要在List方法中增加`c.Items = list.Items`赋值: ```go func (c *Pod) List(namespace, labelSelector, fieldSelector string) (items interface{}, err error) { logs.Info(map[string]interface{}{"命名空间": namespace}, "查询Pod列表") // 有可能是根据查询条件进行查询 listOptions := v1.ListOptions{ FieldSelector: fieldSelector, LabelSelector: labelSelector, } list, err := c.InstanceInterface.Pods(namespace).List(context.TODO(), listOptions) items = list.Items c.Items = list.Items //需要我们增加,因为主文件调用了Items,而原本这里的mod并没有写,需要我们自行增加 return items, err } ``` ## ⚡ 快速开始 ### 1. 🐳 使用Docker部署 #### 代码编译 ```bash SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build -o krm-backend main.go ``` #### 制作镜像 ```dockerfile From registry.cn-beijing.aliyuncs.com/dotbalo/alpine:3.9-tomcat COPY krm-backend ./ ENTRYPOINT ./krm-backend ``` ```bash docker build -t registry.cn-hangzhou.aliyuncs.com/rui_yang/krm_go:v1 . docker push registry.cn-hangzhou.aliyuncs.com/rui_yang/krm_go:v1 ``` #### 启动容器 ```bash docker run -itd -p 8080:8080 -e LOG_LEVEL=info -e user_name=try -e password=1234 -e GIN_MODE=release registry.cn-hangzhou.aliyuncs.com/rui_yang/krm_go:v1 ``` ### 2. ☸️ 使用Kubernetes部署 ```bash kubectl create ns krm kubectl create sa krm-backend -n krm kubectl create rolebinding krm-backend --clusterrole=edit --serviceaccount=krm:krm-backend --namespace=krm # 应用部署配置 cat< ``` 3. 安装依赖 ```bash go mod download ``` 4. 启动开发服务器 ```bash go run main.go ``` ## 📚 API文档 API文档请参考项目中的Swagger文档或Postman集合。 ## 🤝 贡献指南 欢迎提交Pull Request或Issue报告问题。在提交PR前请确保: 1. 代码符合Go语言规范 2. 已通过所有单元测试 3. 更新相关文档 4. 提交信息清晰明确 对于重大功能修改,请先创建Issue讨论设计方案。