创建插件
通过创建插件,在平台上添加一个 WASM 插件,类似于创建了一个模板,该模板中保存了部署 WASM 应用所需的镜像、支持的协议、EnvoyFilter 模板(定义了要编译进 Envoy 的 filter)等。创建成功后,可基于模板快速将插件安装至平台上的服务网格,便于插件的分发、部署和管理。
前提条件
-
平台上 Istio 的版本为 1.9。
-
请提前准备好存放插件镜像的镜像仓库,并将插件镜像上传至仓库。镜像仓库访问时如需进行身份验证,请提前在 工具链管理 > 凭据 中 创建凭据 ,将访问镜像仓库的用户名、密码保存在凭据中。
为了方便您管理镜像,推荐您将镜像仓库集成到 DevOps 平台上,并使用 DevOps 平台的流水线构建镜像。
操作步骤
-
在左侧导航栏中,单击 服务网格 > WASM 插件。
-
单击 创建插件。
-
参考以下说明,配置相关参数。
参数 说明 协议 WASM 应用的网络通信协议。安装插件时,WASM 应用主要用于向服务网格纳管的业务集群下发该插件的配置信息。
四层:支持 TCP 协议。
七层:支持 HTTP、HTTP2 或 gRPC 协议。镜像仓库 WASM 二进制文件构建生成的镜像所在的仓库地址。
注意:当镜像仓库为 Harbor 类型时,填写的地址必须指向 Harbor 仓库中具体的单个项目。例如:当 Harbor 仓库chartrepo
中有 2 个项目 wasm1、wasm2 时,代码仓库地址分别为https://harbor-b.test.cn/chartrepo/wasm1
和https://harbor-b.test.cn/chartrepo/wasm2
。其中,chartrepo
字段为固定值,无需修改。凭据 存储了访问镜像仓库所需的身份验证信息的凭据。需要提前在 工具链管理 > 凭据 中 创建凭据 。 EnvoyFilter 模板 平台上的一种自定义资源,类似 Helm Chart,其中,定义了要写入 Envoy 的 filter。由于 EnvoyFilter 的配置过于复杂,为降低插件的使用成本,插件开发者可将 EnvoyFilter 封装成 EnvoyFilter 模板,插件使用人员只用在安装插件时进行简单的模板参数配置,即可快速安装插件。 EnvoyFilter 模板示例:
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: "{{ .Name }}-add-header" namespace: "{{ .Values.namespace }}" spec: workloadSelector: labels: {{- if .Values.workloadLabels }} {{ .Values.workloadLabels }} {{- end }} configPatches: - applyTo: HTTP_FILTER match: context: {{ .Values.matchContext }} listener: filterChain: filter: name: envoy.http_connection_manager patch: operation: INSERT_BEFORE value: name: "{{ .Name }}" config_discovery: config_source: ads: {} initial_fetch_timeout: 0s type_urls: [ "type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm"]
模板参数示例:
namespace: istio-system matchContext: SIDECAR_INBOUND
-
单击 创建。