Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hgctl plugin command-line tool optimization plan #605

Open
WeixinX opened this issue Oct 27, 2023 · 0 comments
Open

Hgctl plugin command-line tool optimization plan #605

WeixinX opened this issue Oct 27, 2023 · 0 comments

Comments

@WeixinX
Copy link
Collaborator

WeixinX commented Oct 27, 2023

当前情况

目前在 #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

@WeixinX WeixinX self-assigned this Oct 27, 2023
@github-project-automation github-project-automation bot moved this to Todo in Higress Dec 13, 2023
@johnlanni johnlanni moved this from Todo to In Progress in Higress Dec 13, 2023
@johnlanni johnlanni moved this from In Progress to Key issues in Higress Dec 25, 2023
@johnlanni johnlanni moved this from Key issues to In Progress in Higress Dec 26, 2023
@WeixinX WeixinX removed their assignment Dec 29, 2023
@WeixinX WeixinX added the help wanted Extra attention is needed label Dec 29, 2023
@johnlanni johnlanni moved this from In Progress to Todo in Higress Jan 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Todo
Development

No branches or pull requests

3 participants