WASM Image规范概述

Wasm镜像规范概述

简介

WASM OCI映像规范定义了如何将WASM模块打包成OCI镜像。WASM OCI镜像由一个WASM二进制文件、配置文件和目标WASM运行时的元数据组成。

该规范是通用的,允许任何类型的WASM模块,无论它是用来扩展任何Envoy、OPA还是浏览器。

该规范可以被认为是OCI Image Spec的扩展,专门为生产和消费WASM模块(相对于应用容器而言)的应用程序而设计。它旨在提供一个标准机制来管理WASM模块的构建和运行。

本文档将WASM Envoy过滤器考虑为OCI镜像存储的主要用例。

描述

WASM OCI镜像规范定义了一种存储WASM模块的方法,它使WASM模块易于构建、拉取、发布和执行。

由于WASM模块的每个执行环境(运行时)可能有运行时特定的配置参数,因此WASM镜像由内容层(WASM模块本身)和配置层(包含描述模块的元数据)组成,这些元数据与目标运行时相关。

分层

内容层总是由WASM模块二进制组成。

配置层由JSON格式化的字符串组成,其中包含目标运行时的元数据。通过解析config层可以推导出镜像的运行时和ABI版本。

根据目标运行时的不同,config层还可能包含额外的数据。例如,WASM Envoy过滤器的config包含过滤器上可用的root_ids。

为了简单起见,本规范只支持每个映像的单个模块。

使用Envoy运行OCI镜像

Envoy支持通过本地磁盘上的文件或 “Http datasource “加载和运行WASM模块。

Envoy WASM过滤器可以按照规范存储,并在本地缓存的帮助下,从远程注册中心中拉取镜像,从而运行Istio和Gloo。

然后控制平面配置Envoy实例通过本地缓存加载过滤器,如果可用的话,使用镜像配置中提供的必要的root_id参数来加载。