Kubernetes Dashboard开发说明

  部门准备做一个Kuberentes的发行版,研究了一下Dashboard这个项目,以及这个项目应该如何开发,把一些总结写下。

Dashboard 源码说明

    dashboard 项目分为backend和frontend两部分,可以通过执行gulp serve进行调试运行,执行gulp build 进行编译
avatar

       dashboard的backend项目封装了k8s API,heapster API 做了一层封装,包括封装分页查询、界面元数据重新组合等(这里的dashboard backend项目类似一个API 网关,可以集成多个项目的API,提供统一的接口给front项目使用,我们自己就在dashboard的基础上,增加了对tiller的调用)

      dashboard的front项目是基于angular js 实现,(个人对于这块也不是很熟悉,照葫芦画瓢了),封装了不少css,component,还是很好的模仿进行开发的,我在此基础增加了基于Chart创建应用

avatar
###后端代码

   backend项目是一个golang 项目,main函数在dashboard.go 文件,我们开发的时候,主要是在backend/handler/apihandler.go 文件中增加访问路由,以及访问路由的处理函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
apiV1Ws.Route(
   apiV1Ws.GET("/chart").
      To(apiHandler.handleGetChartList).
      Writes(helm.ChartListWeb{}))
      
//get app template list
func (apiHandler \*APIHandler) handleGetChartList(request \*restful.Request, response \*restful.Response) {
   namespace := parseNamespacePathParameter(request)
   dataSelect := parseDataSelectPathParameter(request)
   result, err := chart.GetChartList(namespace,"", dataSelect)
   if err != nil {
      handleInternalError(response, err)
      return
   }
   response.WriteHeaderAndEntity(http.StatusOK, result)
}

    函数的实现思路可以参考dashboard中的查询pod的思路开发,其中做了分页查询,只要熟悉golang,基本没什么难度

###前端代码

此处略。。完全模仿,让以后的js高手写吧。。

###翻译

dashboard 的翻译比较麻烦,使用的是google的开源项目。我们要增加自己的字段进行翻译的话,不需要手动在i18中的xtb文件中添加字段,只需要执行一下gulp build,在i18n文件夹中会自动添加我们使用到的字段,然后在xtb文件中进行翻译就好了。具体参考官方说明。Locaization Guide

###DashBoard 扩展架构

 目前我们把dashboard 进行了扩展,包括镜像管理、模板仓库、监控告警、认证授权 ,具体的组件架构如下:
avatar