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.
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:
- 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).
- 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:
- Defining Applications - How to describe an application in a deployment manifest.
- Deploying Applications - Approaches to deploying applications.
- Using the wadm API - Overview of the high-level functionality exposed by wadm
- Application Status - Further details on application status.
- Migrating from 0.82 - Guidance for users adapting v0.82 manifests for use with the most current version.