higress-group/higress

Hgctl plugin command-line tool optimization plan

Offen

#605 geöffnet am 27.10.2023

 (0 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Go (1.219 Forks)github user discovery
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

Contributor Guide