From 9066935a226213f17f72915bac2356e2f9b1b9cb Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Tue, 26 Jul 2022 09:25:37 +0800 Subject: [PATCH] feedback Signed-off-by: Adrian Cole --- .../supported-middleware/middleware-wasm.md | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/daprdocs/content/en/reference/components-reference/supported-middleware/middleware-wasm.md b/daprdocs/content/en/reference/components-reference/supported-middleware/middleware-wasm.md index 369f74033..08af694f3 100644 --- a/daprdocs/content/en/reference/components-reference/supported-middleware/middleware-wasm.md +++ b/daprdocs/content/en/reference/components-reference/supported-middleware/middleware-wasm.md @@ -14,7 +14,7 @@ extension. The Wasm [HTTP middleware]({{< ref middleware.md >}}) allows you to rewrite a request URI with custom logic compiled to a Wasm binary. In other words, you can extend Dapr using external files that are not pre-compiled into the `daprd` -binary. Dapr embeds [wazero][https://wazero.io] to accomplish this without CGO. +binary. Dapr embeds [wazero][https://wazero.io] to accomplish this without CGO. Wasm modules are loaded from a filesystem path. On Kubernetes, see [mounting volumes to the Dapr sidecar]({{> kubernetes-volume-mounts.md >}}) to configure @@ -22,7 +22,6 @@ a filesystem mount that can contain Wasm modules. ## Component format - ```yaml apiVersion: dapr.io/v1alpha1 kind: Component @@ -34,16 +33,22 @@ spec: metadata: - name: path value: "./hello.wasm" - - name: runtime - value: "wazero" + - name: poolSize + value: 1 ``` ## Spec metadata fields -| Field | Details | Example | -|----------|------------------------------------------------|----------------| -| path | A relative or absolute path to the Wasm binary | "./hello.wasm" | -| poolSize | The instance count of the Wasm binary | 10 | +Minimally, a user must specify a Wasm binary that contains the custom logic +used to rewrite requests. An instance of the Wasm binary is not safe to use +concurrently. The below configuration fields control both the binary to +instantiate and how large an instance pool to use. A larger pool allows higher +concurrency while consuming more memory. + +| Field | Details | Required | Example | +|----------|----------------------------------------------------------------|----------|----------------| +| path | A relative or absolute path to the Wasm binary to instantiate. | false | "./hello.wasm" | +| poolSize | Number of concurrent instances of the Wasm binary. Default: 10 | true | 1 | ## Dapr configuration @@ -72,6 +77,7 @@ To compile your Wasm, you must compile source using a waPC guest SDK such as [TinyGo](https://github.com/wapc/wapc-guest-tinygo). Here's an example in TinyGo: + ```go package main @@ -90,7 +96,9 @@ func rewrite(requestURI []byte) ([]byte, error) { } ``` -If using TinyGo, compile as shown below and set the `path` attribute to the output: +If using TinyGo, compile as shown below and set the spec metadata field named +"path" to the location of the output (ex "example.wasm"): + ```bash tinygo build -o example.wasm -scheduler=none --no-debug -target=wasi example.go` ```