Skip to content

Commit

Permalink
wasm middleware: change path property to url
Browse files Browse the repository at this point in the history
This changes the configuration item for the Wasm binary from path to
url. In doing so, we ease migration from other sources including HTTP
and OCI.

Signed-off-by: Adrian Cole <adrian@tetrate.io>
  • Loading branch information
Adrian Cole committed Apr 30, 2023
1 parent c6a5175 commit 60b9749
Showing 1 changed file with 11 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ 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.

Wasm modules are loaded from a filesystem path. On Kubernetes, see [mounting
volumes to the Dapr sidecar]({{< ref kubernetes-volume-mounts.md >}}) to configure
a filesystem mount that can contain Wasm modules.
Wasm modules are loaded from a URL. For example, a URL "file://rewrite.wasm"
loads "rewrite.wasm" from the current directory of the process. On Kubernetes,
see [mounting volumes to the Dapr sidecar]({{< ref kubernetes-volume-mounts.md >}})
to configure a filesystem mount that can contain Wasm modules.

## Component format

Expand All @@ -32,18 +33,18 @@ spec:
type: middleware.http.wasm
version: v1
metadata:
- name: path
value: "./router.wasm"
- name: url
value: "file://router.wasm"
```
## Spec metadata fields
Minimally, a user must specify a Wasm binary implements the [http-handler](https://http-wasm.io/http-handler/).
How to compile this is described later.
| Field | Details | Required | Example |
|----------|----------------------------------------------------------------|----------|----------------|
| path | A relative or absolute path to the Wasm binary to instantiate. | true | "./hello.wasm" |
| Field | Details | Required | Example |
|-------|----------------------------------------------------------------|----------|----------------|
| url | The URL of the resource including the Wasm binary to instantiate. The supported schemes include "file://". The path of a "file://" URL is relative to the Dapr process unless it begins with '/'. | true | "file://hello.wasm" |
## Dapr configuration
Expand Down Expand Up @@ -109,7 +110,7 @@ func handleRequest(req api.Request, resp api.Response) (next bool, reqCtx uint32
```

If using TinyGo, compile as shown below and set the spec metadata field named
"path" to the location of the output (ex "router.wasm"):
"url" to the location of the output (ex "file://router.wasm"):

```bash
tinygo build -o router.wasm -scheduler=none --no-debug -target=wasi router.go`
Expand Down Expand Up @@ -145,7 +146,7 @@ func rewrite(requestURI []byte) ([]byte, error) {
```

If using TinyGo, compile as shown below and set the spec metadata field named
"path" to the location of the output (ex "example.wasm"):
"url" to the location of the output (ex "file://example.wasm"):

```bash
tinygo build -o example.wasm -scheduler=none --no-debug -target=wasi example.go
Expand Down

0 comments on commit 60b9749

Please sign in to comment.