Code Monkey home page Code Monkey logo

kubemanage's Introduction

简体中文 | English

kubemanage

golang gin gorm vue

kubemanage是一个简单易用的K8S管理平台,前端使用vue3,后端使用gin+gorm,对于初学k8s开发的同学来说,是一个很方便练手的项目,也可以作为企业二次开发的模板

技术栈选型当下最主流框架,后端使用Gin+GORM,前端使用vite+pinia+VUE3(v3版本)开发,前后端分离开发模式,使用client-go与K8S交互,使用Casbin与动态路由实现RBAC的权限体系

前端项目地址 https://github.com/noovertime7/kubemanage-web

V3版本前端项目地址(开发中) https://gitee.com/noovertime/kubemanage-web.git

开始部署

初始化数据库

需要手动创建数据库,数据表与数据会通过DBInitializer自动初始化

CREATE DATABASE kubemanage;

运行工程

前端

git clone https://github.com/noovertime7/kubemanage-web.git

cd kubemanage-web

npm install

npm run serve

后端

注意:请确保用户名/./kube 文件夹下存在k8s的kubeconfig文件,后面重构为多集群注册模式,容器部署,前端使用V3版本,后端请切换到V3分支

开始前请设置配置文件环境变量KUBEMANAGE-CONFIG,或通过命令行参数configFile指定,配置文件优先级: 默认配置 < 环境变量< 命令行

git clone https://github.com/noovertime7/kubemanage.git

cd kubemanage

go mod tidy

go run cmd/main.go

默认用户名密码 admin/kubemanage

现有特性

  • 支持RBAC的权限管理,根据角色配置菜单权限与接口权限
  • 支持资产管理,多主机同步连接,互不影响
  • 本地Kubernetes集群的管理
  • 接口调用操作审计功能

Roadmap

  • 支持多集群管理
  • 支持应用一键发布
  • 在线工单审批系统

Issue 规范

  • issue 仅用于提交 Bug 或 Feature 以及设计相关的内容,其它内容可能会被直接关闭。

  • 在提交 issue 之前,请搜索相关内容是否已被提出。

Pull Request 规范

  • 请先 fork 一份到自己的项目下,在自己项目下新建分支。

  • commit 信息要以feat(model): 描述信息 的形式填写,例如 fix(user): fix xxx bug / feat(user): add xxx

  • 如果是修复 bug,请在 PR 中给出描述信息。

  • 合并代码需要两名维护人员参与:一人进行 review 后 approve,另一人再次 review,通过后即可合并。

生成APi文档

使用swag生成api文档

PS: 请使用最新版本的swag工具,建议拉取最新代码后自行编译,否则会swag init初始化失败

swag init --pd -d ./cmd,docs

成功生成后访问 http://127.0.0.1:6180/swagger/index.html

效果演示

集群详情(v3版本) image

首页 首页

操作审计(v3版本)

接口与菜单的RBAC控制(v3版本)

用户管理(v3版本)

服务状态(v3版本)

CMDB主机管理(v3版本)

CMDB网页终端(v3版本)

工作流 工作流

deployment image

image

deployment

pod 首页

POD日志 POD 日志

POD终端 POD 终端

service service

configmap configmap

node node

kubemanage's People

Contributors

noovertime7 avatar userboyboy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

kubemanage's Issues

有关业务处理流程的优化问题

在文件 kubemanage/pkg/core/kubemanage/v1/sys/user.go 的 如下代码段中:

func (u *userService) PageList(ctx *gin.Context, did uint, info dto.PageUsersIn) (dto.PageUsers, error) {
	users, total, err := u.factory.User().PageList(ctx, did, info)
	if err != nil {
		return dto.PageUsers{}, err
	}
	var out []dto.PageUserItem
	for _, user := range users {
		dept, err := u.factory.Department().Find(ctx, &model.Department{DeptId: user.DepartmentID})
		if err != nil {
			return dto.PageUsers{}, err
		}
		outItem := dto.PageUserItem{
			ID:             user.ID,
			DepartmentID:   user.DepartmentID,
			DepartmentName: dept.DeptName,
			UserName:       user.UserName,
			NickName:       user.NickName,
			Authorities:    user.Authorities,
			Phone:          user.Phone.String,
			Email:          user.Email.String,
			Enable:         user.Enable,
			Status:         user.Status.Int64,
		}
		out = append(out, outItem)
	}
	return dto.PageUsers{
		Total:    total,
		Page:     info.Page,
		PageSize: info.PageSize,
		List:     out,
	}, nil
}

u.factory.User().PageList() 函数通过did 获得users,那么users中所有元素的DepartmentID,不应该都是相同的吗?
为什么还要在for循环中请求 u.factory.Department().Find() 函数呢?是不是在循环外部请求一次就好了呢?

产品roadmap

请问下这个产品会一直更新下去吗?因为我也一直想找个项目学习,如果作者打算一直更新下去我就一直跟着大佬学习。
另外有roadmap吗?比如会有RBAC的权限系统or 多集群管理?。 😊

CMDB 资产管理平台设计

需求

  • webshell
  • web端对主机内文件的上传下载删除
  • 支持授权绑定主机,可设置授权过期时间
  • 支持主机组,授权支持绑定主机组
  • 基于用户的权限控制,主机或主机组需授权给用户

Roadmap

  • 支持定时执行主机脚本
  • 支持同步云厂商资源

初始化运行命令报错

环境
maridb : 10.3

2023/06/17 17:11:12 C:/Users/pandihao1/go/pkg/mod/gorm.io/driver/[email protected]/migrator.go:258
mail longtext COMMENT '用户邮箱',en from Information_schema.SCHEMATA where SCHEMA_NAME LIKE 'kubemanage%' ORDER BYable bigint DEFAULT 1 COMMENT '用户是否被冻结 1正常 2冻结',status int(11) COMMENT '0离线',created_at datetime(3) NULL,updated_at datetime(3) NULL,deleted_at datetime(3) NULL,PRIMARY KEY (id),INDEX idx_sys_users_deleted_at (deleted_at),INDEX idx_sys_users_uuid (uuid),INDEX idx_sys_users_user_name (user_name`))
Error 1067: Invalid default value for 'nick_name'

RBAC权限管理

  • 动态路由前后端联调成功
  • 支持限制用户的菜单权限
  • 支持限制用户的api接口权限
  • 完成权限接口的增删改查

始终无法指定kubeconfig

您好,我期望通过参数--kubeconfig 指定 kubeconfig文件的路径,但是始终提示错误,内容如下:

[root@localhost kubemanage]# ./main --kubeconfig "/root/.kube/config"
Error: unknown flag: --kubeconfig
Usage:
  kubemanage-server [flags]

Flags:
      --configFile string   The location of the kubemanage configuration file
  -h, --help                help for kubemanage-server

似乎是cobra 库,拦截了该参数。对于此问题您有什么好的建议吗?

顺便问一下,您为什么在kubemanage/pkg/core/kubemanage/v1/kube/init.go #31,处使用flag呢,而不是使用cobra,是出于什么原因考虑的?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.