The wasmCloud Application Deployment Manager (wadm) enables declarative wasmCloud applications. It's responsible for managing a set of application deployment specifications, monitoring the current state of an entire lattice, and issuing the appropriate lattice control commands required to close the gap between observed and desired state.
You can easily run wadm by downloading wash and launching it alongside NATS and wasmCloud. Then, you can use the wash app
command to query, create, and deploy applications.
wash up -d # Start NATS, wasmCloud, and wadm in the background
wash app list # Query the list of applications
If you prefer to run wadm separately and/or connect to running wasmCloud hosts, you can instead opt for using the latest GitHub release artifact and executing the binary. Simply replace the latest version, your operating system, and architecture below. Please note that wadm requires a wasmCloud host version >=0.63.0
```
curl -fLO https://github.com/wasmCloud/wadm/releases/download/
Take the following manifest and save it locally (you can also download this from echo.yaml):
```yaml apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: echo annotations: version: v0.0.1 description: "This is my app" spec: components: - name: echo type: actor properties: image: wasmcloud.azurecr.io/echo:0.3.7 traits: - type: spreadscaler properties: replicas: 1 - type: linkdef properties: target: httpserver values: address: 0.0.0.0:8080
- name: httpserver
type: capability
properties:
contract: wasmcloud:httpserver
image: wasmcloud.azurecr.io/httpserver:0.17.0
traits:
- type: spreadscaler
properties:
replicas: 1
```
Then, use wadm to put the manifest and deploy it.
wash app put ./echo.yaml
wash app deploy echo
🎉 You've just launched your first application with wadm! Try curl localhost:8080/wadm
and see
the response from the echo WebAssembly
module.
When you're done, you can use wadm to undeploy the application.
wash app undeploy echo
wadm supports upgrading applications by put
ting new versions of manifests and then deploy
ing
them. Try changing the manifest you created above by updating the number of echo replicas.
yaml
<<ELIDED>>
name: echo
annotations:
version: v0.0.2 # Note the changed version
description: "wasmCloud echo Example"
spec:
components:
- name: echo
type: actor
properties:
image: wasmcloud.azurecr.io/echo:0.3.5
traits:
- type: spreadscaler
properties:
replicas: 10 # Let's run 10!
<<ELIDED>>
Then, simply deploy the new version:
wash app put ./echo.yaml
wash app deploy echo v0.0.2
If you navigate to the wasmCloud dashboard, you'll see that you now have 10 instances of the echo actor.
Documentation for configuring the spreadscaler to spread actors and providers across multiple hosts in a lattice is forthcoming.
wadm has a very small set of responsibilities, which actually contributes to its power.
In advanced use cases, wadm is also capable of:
🚧 The above functionality is somewhat tested, but not as rigorously as a single instance monitoring a single lattice. Proceed with caution while we do further testing.
Interacting with wadm is done over NATS on the root topic wadm.api.{prefix}
where prefix
is
the lattice namespace prefix. For more information on this API, please consult the wadm
Reference.
As this is a new project there are some things we know are missing or buggy. A non-exhaustive list of these can be found below:
The wasmCloud Application Deployment Manager (wadm) originally came from the autonomous lattice
controller RFC and then was reworked in
version 0.4
in response to the tidying and productioning
RFC.