higress-group/higress
Hgctl plugin command-line tool optimization plan
Offen
#605 geöffnet am 27.10.2023
area/hgctlarea/pluginhelp wantedlevel/challengepriority/highsig/ops
Repository-Metriken
- Stars
- (9.036 Sterne)
- PR-Merge-Metriken
- (Durchschn. Merge 7T 9h) (18 gemergte PRs in 30 T)
Beschreibung
当前情况
目前在 #453 中已完成并提交开源之夏项目 Higress Wasm 插件构建/调试/部署的命令行实现 的相关内容,实现的功能如下:
| 命令 | 子命令 | 描述 |
|---|---|---|
| hgctl plugin build | - | 构建 Wasm 插件,产物为文件或 OCI 镜像 |
| hgctl plugin test | create | 创建 Wasm 插件测试环境 |
| start | 启动测试环境 | |
| ls | 查看当前已启动的测试环境 | |
| stop/clean | 停止/清理测试环境 | |
| hgctl plugin install | - | 安装 Wasm 插件,当前支持通过 YAML 和 Wasm 插件项目源文件进行安装 |
| hgctl plugin uninstall | - | 卸载已安装的 Wasm 插件 |
| hgctl plugin config | create | 创建 Wasm 插件配置模版文件 |
| edit | 编辑已安装的 Wasm 插件配置 | |
| hgctl plugin init | - | 初始化 Wasm 插件项目 |
| hgctl plugin ls | - | 查看已安装的 Wasm 插件 |
优化计划
1. install 增强
当前 install 仅支持通过 YAML 文件和 Wasm 插件项目源文件进行安装,同时 YAML 文件的安装方式能力较弱,与 kubectl apply -f plugin-conf.yaml 无异:
$ hgctl plugin install --from-yaml plugin-conf.yaml
$ hgctl plugin install --from-go-src ./
后续将:
- 把
--from-yaml更改为--from-oci,并以编译并上传到镜像仓库的 Wasm OCI 镜像为来源,通过命令行交互的方式填入元数据信息进行安装; - 添加
--from-jar选项将 jab 包作为安装源; - 取消 install 命令在 options.yaml 文件中对 build 命令选项的依赖,如
--out-type/dest,并为 install 添加--pull/image选项; - 优化交互提示信息:
- 屏蔽
GLOABL,INSTANCE这样带有歧义的插件作用域选项,取而代之的是暴露Gloabl,Ingress,Domain具有确定性的选项; - 填写 Ingress 或 Domain 配置时,命令行工具获取 Higress 当前存在的路由和域名信息,并作为复选选项供用户选择,使得用户不需要手动输入
- 屏蔽
2. 优化命令行选项与 option.yaml
- 命令行选项不需要与 option.yaml 中的字段一一对应
- 可以简化命令行选项,使其专注于 action(如 build to image, install from yaml)
3. 增加 tags
当前通过 go 结构体字段 tags 来设置 spec.yaml 中 schema 的相应字段,目前仅支持以下 tags:
- yaml: 指定字段名,为
-,时将忽略该字段 - required: 指定是否必填
- minimum/maximum: 指定最小/大值
- minLength/maxLength: 指定最小/大长度
- minItems/maxItems: 指定元素个数的最小/大值
- pattern: 指定正则表达式
后续考虑增加如 default 等更多遵循 json schema 的 tags