TSB 配置

本文将描述 WASM 扩展在 TSB 中是如何定义的,以及它们如何分配给层次结构中的组件。

TSB 中的 WASM

为了控制网格中允许的扩展,避免安全泄漏并简化扩展升级过程,TSB 拥有一个WASM 扩展目录, 管理员将在其中注册所有可用于不同组件中使用的扩展。 此目录将包含每个扩展的描述、镜像和执行属性。 当扩展的新版本可用时,更改 WASM 扩展目录记录的内容将将更新传播到该扩展的所有分配。

UI
UI

这些扩展被打包为 OCI 镜像,包含 WASM 文件,并部署在容器镜像仓库中,Istio 将从中拉取并提取内容。 使用 OCI 镜像交付 WASM 扩展的好处在于,安全性已经实现并标准化,与其他工作负载镜像一样。

扩展可以允许全局使用,也可以在一组租户中受到限制,这将影响扩展可以附加的位置。

在扩展在目录中创建后,它们将启用并可用于与同一组织层次结构中的 TSB 组件的附件中使用。它们的属性将成为附件的配置。 可以配置 WASM 扩展的组件包括:组织租户工作区安全组入口网关出口网关第一层网关

在 TSB 资源中使用 WASM 扩展

WASM 扩展可以在组织设置租户设置工作区设置defaultSecuritySettings属性中指定,并将影响层次结构中属于这些资源的所有工作负载。 此外,这些附件可以在 IngressGateway、EgressGateway 和 Tier1Gateway 的extension属性中指定,只有与这些网关链接的工作负载才会受到 WASM 扩展的影响。TSB 将使用工作负载选择器来指定工作负载。

  extension:
    - fqn: "organizations/tetrate/extensions/wasm-add-header"
      config:
        header: x-wasm-header
        value: igw-tsb

在 TSB 中使用 WASM 扩展的另一种方式是使用 Istio 直接模式,创建一个IstioInternalGroup和一个WasmPlugin,并引用该组。 例如:

apiVersion: istiointernal.tsb.tetrate.io/v2
kind: Group
metadata:
  organization: tetrate
  tenant: mytenant
  workspace: myworkspace
  name: internal-group
spec:
  namespaceSelector:
    names:
      - "*/httpbin"

然后直接创建 Istio WasmPlugin:

apiVersion: extensions.istio.io/v1alpha1
kind: WasmPlugin
metadata:
  name: demo-wasm-add-header
  namespace: app-namespace
  annotations:
    tsb.tetrate.io/organization: tetrate
    tsb.tetrate.io/tenant: mytenant
    tsb.tetrate.io/workspace: myworkspace
    tsb.tetrate.io/istioInternalGroup: internal-group
spec:
  selector:
    matchLabels:
      app: httpbin
  url: oci://docker.io/tetrate/xcp-wasm-e2e:0.3
  imagePullPolicy: IfNotPresent
  pluginConfig:
    header: x-wasm-header
    value: xcp