diff --git a/guide/addon/customize.md b/guide/addon/customize.md index 341eddb..b651559 100644 --- a/guide/addon/customize.md +++ b/guide/addon/customize.md @@ -31,7 +31,91 @@ description: 如何基于KuboardAPI实现自定义的Kubernetes监控套件 ## 下载脚本 -正在完善此文档... +### 下载方式 + +Kuboard 提供了两种下载套件脚本的方式: +* 从套件仓库下载 +* 从指定路径下载 + +如下图所示,点击界面中的安装按钮之后,Kuboard 将套件的相关脚本全部存入到名称空间下的 ConfigMap 中。 +* 全局套件存入到 kube-system 名称空间 +* 名称空间套件存入到所在的名称空间 + +![K8S教程_安装套件_套件仓库对话框](./README.assets/image-20191124194352173.png) + +### 套件描述文件 + +套件仓库或者指定URL的方式下载套件脚本时,都需要对应到一个套件描述文件。套件描述文件的主要用途是: +* 标识套件的基本信息,如名称、id、更新时间、维护者、文档地址等 +* 定义套件所需的资源文件列表: + * k8s yaml 文件,向 Kubernetes 创建对象 + * java scripts 脚本,向 Kuboard 添加回调函数 + * resources 脚本,额外的资源文件 + +以 [资源层监控套件](https://addons.kuboard.cn/eip-monitor-system/0.1.1/addon.json) 的描述文件为例:(该文件的 URL 为 `https://addons.kuboard.cn/eip-monitor-system/0.1.1/addon.json`) + +``` json {7,8,9} +{ + "name": "资源层监控套件", + "id": "eip-monitor-system", + "version": "0.1.1", + "lastUpdate": "2019-12-11", + "maintainer": "shaohq@foxmail.com", + "scripts": ["system-addon.js"], + "k8s": ["system-k8s.yaml"], + "resources": ["resource/1621.json", "resource/1860.json", "resource/3146.json", "resource/8588.json"], + "isGlobal": true, + "info": { + "description": "通过prometheus/grafana监控Kubernetes资源层的信息,包括CPU使用、内存使用、网络使用等信息。", + "document": "https://shaohq.github.io/eip-monitor-system/" + } +} +``` + +描述文件包含的字段如下: + +| 字段名称 | 字段类型 | 字段描述 | +| ---------------- | ------------- | ------------------------------------------------------------ | +| name | String | 套件的中文名字,将显示在仓库中 | +| id | String | 套件的 ID,[发布到套件仓库](./repository.html) 时,该 ID 必须在仓库内全局唯一 | +| version | String | 套件的版本标识 | +| lastUpdate | String | 套件最后更新日期 | +| maintainer | String | 套件维护者的联系方式 | +| scripts | Array[String] | Java scripts 脚本,用于向 Kuboard 添加界面元素以及回调函数。(相对于套件描述文件的路径) | +| k8s | Array[String] | kubernetes yaml 文件,用于向 Kubernetes 创建新的对象。(相对于套件描述文件的路径) | +| resources | Array[String] | 额外资源文件,通常在套件初始化时使用。(相对于套件描述文件的路径) | +| isGlobal | Boolean | 是否为 [全局套件](/guide/addon/#类型) | +| info.description | String | 套件的文本描述,将显示在套件仓库中 | +| info.document | String | 套件的文档,将显示在套件仓库中 | + +::: tip 指定URL + +如果您把套件的脚本放在自己的服务器上,则必须为其指定跨域名访问,nginx 配置如下: + +``` +add_header 'Access-Control-Allow-Origin' '*' always; +``` + +也可以简单地将其上传到 GitHub 上, + +::: + + + +### 套件的ConfigMap + +通过指定URL路径的方式或者从仓库下载的方式下载套件脚本后,所有内容将被存储到 Kubernetes 名称空间里以套件 id 命名的 ConfigMap 中。例如,前面例子中的套件脚本下载完成后,将被存入到 `kube-system/eip-monitor-system` 这个 ConfigMap 里,如下图所示: + +![套件的ConfigMap](./customize.assets/image-20191211154833750.png) + + + +::: tip 脚本名与ConfigMap中的 Key 的映射 + + + +::: + ## 安装