Skip to main content
Version: 1.0

wasmCloud Application Deployment Manager (wadm)

Overview

The wasmCloud Application Deployment Manager (wadm) manages declarative application deployments, reconciling the current state of an application with the desired state.

In a declarative deployment pattern, developers define the components, configuration, and scaling properties of their applications using static configuration files that can be versioned, shared, edited, and otherwise used as a source of truth. In wasmCloud, those application manifests conform to the Open Application Model (OAM) and may be written in YAML or JSON. Once a deployment is declared, wadm issues the low-level commands responsible for making that declaration a reality.

For the Kubernetes developer

Application manifests should be very familiar to Kubernetes developers. Moreover, you can think of a wasmCloud application deployment as roughly analogous to a Kubernetes deployment: once you define your application components in a manifest, wadm will ensure that your application reaches desired state based on that manifest.

If you're interested in deploying WebAssembly applications on Kubernetes, check out our Kubernetes operator that makes it easy to deploy and leverage declarative wadm manifests.

Application deployment lifecycle

The diagram below illustrates the lifecycle of an application once deployed to wadm:

Application deployment lifecycle

  • The user deploys the application manifest (defined in a wadm.yaml file) to wadm via wash according the wadm API.
  • wadm validates the manifest and exports it (as a versioned representation of the application called a model) to a NATS key-value bucket that is external to wadm.
  • Meanwhile, the deployment is passed to the wadm scaler manager, which creates a scaler for the application. The scaler begins a reconciliation loop (represented in the cutout below).

Reconciliation loop

  • Once a scaler is created, it compares the current state to the desired state and issues a status accordingly: Deployed, Reconciling, or Failed.
    • Deployed indicates that the current state matches the desired state.
    • Reconciling indicates that the current state does not match the desired state, but the scaler can issue commands to reach the desired state.
    • Failed indicates that the current state does not match the desired state, and the scaler cannot issue commands to reach the desired state.
  • The scaler publishes commands to a NATS command stream as needed.
  • From here, the scaler will wait for events that might change the current state.

Keep reading

The following pages provide more detail on various aspects of application deployment with wasmCloud and wadm: