Wasm 插件镜像规范
1. 概述
本规范旨在定义对 Higress Wasm Plugin 镜像的内容和构建方式。在编写时,笔者参考了 Wasm Image Specification。
注意:本规范使用 OCI 镜像格式,并不限定插件只能使用 OCI 镜像,对于自定义插件开发,请参考自定义插件里介绍的更简单的方式。
OCI 镜像是用来规范所有平台推出的通用标准插件使用
2. 镜像结构
每个镜像必须基于 scratch
使用 OCI 格式规范进行构建,且可包含以下文件:
- spec.yaml:必要。插件的元数据文件。其内容格式请见第 3 节。
- README.md:必要。插件的用法说明文件。使用 Markdown 格式。语言可使用英文或中文。
- README_{lang}.md:可选。插件用法说明文件的翻译版本。使用 Markdown 格式。
lang
的取值为ZH
或EN
。 - icon.png:可选。插件的图标文件。也可以选择在 spec.yaml 中指定图标 URL。二者同时存在时,系统会使用包内部的图标文件用于展示。
- plugin.wasm:必要。插件的二进制文件。
镜像的每一层只可包含一个文件。
除 plugin.wasm 所在层外,其它层需根据文件名设置 media type:
- spec.yaml:application/vnd.module.wasm.spec.v1+yaml
- README.md:application/vnd.module.wasm.doc.v1+markdown
- README_{lang}.md:application/vnd.module.wasm.doc.v1.{lang}+markdown
- icon.png:application/vnd.module.wasm.icon.v1+png
plugin.wasm 文件必须放置于镜像的最后一层,且该层应使用 application/vnd.oci.image.layer.v1.tar+gzip 作为 media type。
3. 元数据文件格式
本节以 basic-auth
插件的元数据信息为例,介绍元数据文件 spec.yaml
的格式。
4. 镜像构建方式
- 在 Higress 项目目录内启动构建用容器
- 在容器中构建 Wasm 文件
- 构建并推送 OCI 镜像
5. 附录
5.1 各插件类型的缺省图标
- 自定义:https://img.alicdn.com/imgextra/i1/O1CN018iKKih1iVx287RltL_!!6000000004419-2-tps-42-42.png
- 认证鉴权:https://img.alicdn.com/imgextra/i4/O1CN01BPFGlT1pGZ2VDLgaH_!!6000000005333-2-tps-42-42.png
- 流量管控:https://img.alicdn.com/imgextra/i3/O1CN01bAFa9k1t1gdQcVTH0_!!6000000005842-2-tps-42-42.png
- 流量观测:https://img.alicdn.com/imgextra/i4/O1CN01aet3s61MoLOEEhRIo_!!6000000001481-2-tps-42-42.png
- 安全防护:https://img.alicdn.com/imgextra/i1/O1CN01jKT9vC1O059vNaq5u_!!6000000001642-2-tps-42-42.png
- 传输协议:https://img.alicdn.com/imgextra/i2/O1CN01xIywow1mVGuRUjbhe_!!6000000004959-2-tps-42-42.png