37 个版本 (10 个重大变更)
新 0.14.0 | 2024 年 8 月 20 日 |
---|---|
0.13.0-beta.2 | 2024 年 7 月 31 日 |
0.10.0 | 2024 年 1 月 18 日 |
0.9.1 | 2023 年 12 月 19 日 |
0.5.0-alpha.1 | 2023 年 7 月 25 日 |
在 WebAssembly 中排名 26
每月下载量 681
730KB
15K SLoC

wasmCloud 应用程序部署管理器 (wadm)
Wadm 是一个 Wasm 原生编排器,用于管理和扩展声明性 wasmCloud 应用程序。
责任
wadm 功能强大,因为它专注于一组核心责任,使其高效且易于管理。
- 管理应用程序规范 - 管理代表 期望状态 的应用程序。这包括创建、删除、升级和回滚到以前版本的应用程序。应用程序规范使用 开放应用程序模型 定义。有关 wadm 的特定 OAM 功能的更多信息,请参阅我们的 OAM README。
- 观察状态 - 监控 CloudEvents,以构建当前状态,来自 晶格 中的所有主机。
- 与补偿命令进行协调 - 当当前状态与期望状态不匹配时,通过 控制接口 向晶格中的 wasmCloud 主机发出命令,以达到期望状态。wadm 不断协调,并会立即做出反应,以确保应用程序始终处于部署状态。例如,如果主机停止,wadm 将协调
host_stopped
事件,并在其他可用主机上启动组件所需的任何必要命令。
使用 wadm
安装 & 运行
您可以通过下载 wash
CLI 程序来轻松运行 wadm,当您运行 wash up
时,它将自动启动 wadm、NATS 和 wasmCloud 主机。您可以使用 wash
查询、创建和部署应用程序。
wash up -d # Start NATS, wasmCloud, and wadm in the background
按照 wasmCloud 快速入门 开始构建和部署应用程序,或者按照下面的 部署应用程序 示例简单尝试部署。
如果您希望单独运行 wadm 并/或连接到正在运行的 wasmCloud 主机,您可以选择使用最新的 GitHub 发布物并执行二进制文件。只需替换以下内容:最新版本、操作系统和架构。请注意,wadm 需要 wasmCloud 主机版本 >=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
部署应用程序
复制以下清单并将其保存在本地为 hello.yaml
(您也可以在 oam
目录 中找到)
# 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
然后使用 wash
来部署清单
wash app deploy hello.yaml
🎉 您已使用 wadm 启动了您的第一个应用程序!尝试 curl localhost:8080
。
完成操作后,您可以使用 wash
来卸载应用程序
wash app undeploy hello-world
修改应用程序
wadm 支持通过部署清单的新版本来升级应用程序。尝试通过更新实例数量来更改上面创建的清单。
<<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>>
然后简单地部署新的清单
wash app deploy hello.yaml
现在 wasmCloud 已配置为根据传入负载自动扩展您的组件到 10 个实例。
🚧 高级
您可以在 测试 目录中找到部署端到端多租户示例的 Docker Compose 文件。
在高级用例中,wadm 还可以
- 监控多个晶格。
- 运行多个实例,以在多个进程之间分配负载,或用于高可用性架构。
🚧 多晶格和多进程功能已进行了一定程度的测试,但不如单个实例监控单个晶格那样严格。在进一步测试期间,请谨慎操作。
API
与 wadm 交互是通过 NATS 在根主题 wadm.api.{prefix}
上完成的,其中 prefix
是晶格命名空间前缀。有关此 API 的更多信息,请参阅 wadm 参考。
参考
wasmCloud 应用程序部署管理器(wadm)最初来自 自洽晶格控制器 RFC,然后在版本 0.4
中进行了重构,以响应 整理和产品化 RFC。
依赖关系
~37–52MB
~1M SLoC