云原生学习路线导航页(持续更新中)

1、项目介绍

1.1.项目资料

  • 本项目是一个简单易用的K8S管理平台,可以实现k8s资源的图形化界面管理,采用golang语言编写,使用了gin+gorm框架。更多详细介绍请见github仓库
  • 后端:
    • 基于开源项目开发,源仓库地址:https://github.com/noovertime7/kubemanage
    • 本人fork源仓库,编写详细注释,仓库地址:https://github.com/wantong0305/kubemanage.git
  • 前端:
    • https://github.com/noovertime7/kubemanage-web
  • 项目目录+代码结构思维导图,共享腾讯文档地址:https://docs.qq.com/mind/DTFBVT1FnbE1iV1JX

2、后端项目部署

2.1.注意事项

  • 本项目用到的一些库,无法在windows 386下编译,只能在linux下编译,所以我们采用docker打包镜像,然后运行容器的方式运行

2.2.解决项目依赖

  • 本项目依赖 一个mysql数据库 + 一个k8s环境,因此需要先准备好环境

2.2.1.docker运行一个mysql

docker run -d -p 3306:3306 --name mysql3 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

2.2.2.mysql中创建数据库

CREATE DATABASE kubemanage;

3、启动kubemanage项目

  • 进入到linux机器中

  • git clone https://github.com/wantong0305/kubemanage.git

  • 编写dockerfile(目前已经在项目里写好了,这一步可以跳过),dockerfile文件如下:

    # 指定基础的go编译镜像
    FROM golang:alpine as build
    
    # 指定环境变量
    ENV GOPROXY=https://goproxy.cn \
        GO111MODULE=on \
        CGO_ENABLED=0 \
        GOOS=linux \
        GOARCH=amd64 \
        HOME=/root
    
    # 指定工作空间目录,会自动cd到这个目录
    WORKDIR /build
    
    # 把项目的依赖配置文件拷贝到容器中,并下载依赖
    COPY go.mod .
    COPY go.sum .
    RUN go mod download
    
    # 把项目的其他所有文件拷贝到容器中
    COPY . .
    
    # 编译成可执行二进制文件
    RUN go build -o app ./cmd/main.go
    
    # 指定新的运行环境,最终的运行会基于这个坏境,使得最终的镜像非常小
    FROM scratch as deploy
    
    # 把编译环境中打包好的可执行文件和配置文件拷贝到当前镜像
    COPY --from=build /build/app /
    
    CMD ["/app"]
    
  • cd 到项目目录下,编译打包镜像:

    • 示例:给镜像取名kubemanage,版本号是1.0.5
    docker build -t kubemanage:1.0.5 .
    
  • 使用镜像创建容器

    • 记得设置环境变量HOME,用于代码中拼接kubeconfig路径
    • 将外部系统的/root/.kube/config文件,挂载到容器内部,才可以连接到k8s集群中去
    • 端口号要使用恰当
    docker run -d --name kube-manage -p 6180:6180 --env HOME=/root --mount type=bind,source=/root/.kube/config,target=/root/.kube/config kubemanage:1.0.5
    
  • 这样后端项目就跑起来了,监听6180端口。

3、前端项目部署

  • 前端目前包括两个版本,新版本目前仍在开发中,我们使用的是旧版本。部署步骤如下:
    git clone https://github.com/noovertime7/kubemanage-web.git
    
    cd kubemanage-web
    
    npm install
    
    npm run serve
    
  • 前端项目启动端口为5240,前端启动后,浏览器访问http://127.0.0.1:5240/ 即可体验项目

4、项目用到的框架

  • github.com/spf13/cobra
    • 命令行工具框架
  • github.com/spf13/viper
    • 配置处理框架
    • 学习博客:https://www.liwenzhou.com/posts/Go/viper/
  • github.com/fsnotify/fsnotify
    • 文件系统通知库,用于监听文件系统事件,配合viper实现配置的热更新
  • go.uber.org/zap
    • 高性能日志框架
    • 学习博客1:https://www.liwenzhou.com/posts/Go/zap/
    • 学习博客2:https://www.cnblogs.com/jiujuan/p/17304844.html
  • github.com/natefinch/lumberjack
    • 配合zap实现日志切割的库
  • github.com/mitchellh/mapstructure
    • map结构序列化框架
  • github.com/gin-gonic/gin
    • gin框架,轻量级web框架
  • github.com/gin-contrib/cors
    • gin框架官方维护的一个中间件库,提供了一个处理跨域请求的中间件
  • github.com/go-gorm/gorm
    • orm框架
    • 中文官方文档(文档很健全):https://gorm.io/zh_CN/docs/index.html
  • github.com/satori/go.uuid
    • go.uuid提供了uuid的纯go实现,可以生成和解析uuid
  • golang.org/x/time/rate
    • go标准扩展包的一部分,实现了基于令牌桶算法的限速器
  • gopkg.in/go-playground/validator.v9
    • 常用的验证器库,用于对请求参数进行数据验证,提供了多种验证器和验证规则
    • 其中,gopkg.in/go-playground/validator.v9/translations 提供字段验证发生错误时的国际化翻译功能。通过使用这个包,可以方便地将验证器返回的错误信息翻译成不同的语言
  • github.com/dgrijalva/jwt-go
    • go语言的 一个JWT(JSON Web Token)库
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐