Crates.io | wadm |
lib.rs | wadm |
version | 0.18.0 |
source | src |
created_at | 2023-04-28 20:06:00.260323 |
updated_at | 2024-10-22 20:57:35.960942 |
description | wasmCloud Application Deployment Manager: A tool for running Wasm applications in wasmCloud |
homepage | |
repository | https://github.com/wasmcloud/wadm |
max_upload_size | |
id | 851680 |
size | 651,088 |
Wadm is a Wasm-native orchestrator for managing and scaling declarative wasmCloud applications.
wadm is powerful because it focuses on a small set of core responsibilities, making it efficient and easy to manage.
host_stopped
event and issue any necessary commands to start components on other available hosts.You can easily run wadm by downloading the wash
CLI, which automatically launches wadm alongside NATS and a wasmCloud host when you run wash up
. You can use wash
to query, create, and deploy applications.
wash up -d # Start NATS, wasmCloud, and wadm in the background
Follow the wasmCloud quickstart to get started building and deploying an application, or follow the Deploying an application example below to simply try a deploy.
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
# Install wadm
curl -fLO https://github.com/wasmCloud/wadm/releases/download/<version>/wadm-<version>-<os>-<arch>.tar.gz
tar -xvf wadm-<version>-<os>-<arch>.tar.gz
cd wadm-<version>-<os>-<arch>
./wadm
Copy the following manifest and save it locally as hello.yaml
(you can also find it in the oam
directory):
# Metadata
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: hello-world
annotations:
description: 'HTTP hello world demo'
spec:
components:
- name: http-component
type: component
properties:
# Run components from OCI registries as below or from a local .wasm component binary.
image: ghcr.io/wasmcloud/components/http-hello-world-rust:0.1.0
traits:
# One replica of this component will run
- type: spreadscaler
properties:
instances: 1
# The httpserver capability provider, started from the official wasmCloud OCI artifact
- name: httpserver
type: capability
properties:
image: ghcr.io/wasmcloud/http-server:0.22.0
traits:
# Link the HTTP server and set it to listen on the local machine's port 8080
- type: link
properties:
target: http-component
namespace: wasi
package: http
interfaces: [incoming-handler]
source:
config:
- name: default-http
properties:
ADDRESS: 127.0.0.1:8080
Then use wash
to deploy the manifest:
wash app deploy hello.yaml
🎉 You've just launched your first application with wadm! Try curl localhost:8080
.
When you're done, you can use wash
to undeploy the application:
wash app undeploy hello-world
wadm supports upgrading applications by deploying new versions of manifests. Try changing the manifest you created above by updating the number of instances.
<<ELIDED>>
metadata:
name: hello-world
annotations:
description: 'HTTP hello world demo'
spec:
components:
- name: http-component
type: component
properties:
image: ghcr.io/wasmcloud/components/http-hello-world-rust:0.1.0
traits:
- type: spreadscaler
properties:
instances: 10 # Let's have 10!
<<ELIDED>>
Then simply deploy the new manifest:
wash app deploy hello.yaml
Now wasmCloud is configured to automatically scale your component to 10 instances based on incoming load.
You can find a Docker Compose file for deploying an end-to-end multi-tenant example in the test directory.
In advanced use cases, wadm is also capable of:
🚧 Multi-lattice and multi-process 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.
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.