首页 / 平台管理 / 服务网格 / WASM 插件(Alpha) / 创建插件

创建插件

通过创建插件,在平台上添加一个 WASM 插件,类似于创建了一个模板,该模板中保存了部署 WASM 应用所需的镜像、支持的协议、EnvoyFilter 模板(定义了要编译进 Envoy 的 filter)等。创建成功后,可基于模板快速将插件安装至平台上的服务网格,便于插件的分发、部署和管理。

前提条件

操作步骤

  1. 在左侧导航栏中,单击 服务网格 > WASM 插件

  2. 单击 创建插件

  3. 参考以下说明,配置相关参数。

    参数 说明
    协议 WASM 应用的网络通信协议。安装插件时,WASM 应用主要用于向服务网格纳管的业务集群下发该插件的配置信息。
    四层:支持 TCP 协议。
    七层:支持 HTTP、HTTP2 或 gRPC 协议。
    镜像仓库 WASM 二进制文件构建生成的镜像所在的仓库地址。
    注意:当镜像仓库为 Harbor 类型时,填写的地址必须指向 Harbor 仓库中具体的单个项目。例如:当 Harbor 仓库 chartrepo 中有 2 个项目 wasm1、wasm2 时,代码仓库地址分别为 https://harbor-b.test.cn/chartrepo/wasm1https://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
  4. 单击 创建