#wasmcloud

wadm

wasmCloud 应用程序部署管理器:用于在 wasmCloud 中运行 Wasm 应用程序的工具

37 个版本10 个重大变更)

0.14.0 2024 年 8 月 20 日
0.13.0-beta.22024 年 7 月 31 日
0.10.0 2024 年 1 月 18 日
0.9.1 2023 年 12 月 19 日
0.5.0-alpha.12023 年 7 月 25 日

WebAssembly 中排名 26

Download history 462/week @ 2024-05-02 447/week @ 2024-05-09 555/week @ 2024-05-16 632/week @ 2024-05-23 321/week @ 2024-05-30 84/week @ 2024-06-06 156/week @ 2024-06-13 10/week @ 2024-06-20 156/week @ 2024-06-27 43/week @ 2024-07-04 27/week @ 2024-07-11 12/week @ 2024-07-18 261/week @ 2024-07-25 297/week @ 2024-08-01 17/week @ 2024-08-08 104/week @ 2024-08-15

每月下载量 681

Apache-2.0

730KB
15K SLoC

wadm logo

wasmCloud 应用程序部署管理器 (wadm)

Wadm 是一个 Wasm 原生编排器,用于管理和扩展声明性 wasmCloud 应用程序。

责任

wadm 功能强大,因为它专注于一组核心责任,使其高效且易于管理。

  • 管理应用程序规范 - 管理代表 期望状态 的应用程序。这包括创建、删除、升级和回滚到以前版本的应用程序。应用程序规范使用 开放应用程序模型 定义。有关 wadm 的特定 OAM 功能的更多信息,请参阅我们的 OAM README
  • 观察状态 - 监控 CloudEvents,以构建当前状态,来自 晶格 中的所有主机。
  • 与补偿命令进行协调 - 当当前状态与期望状态不匹配时,通过 控制接口 向晶格中的 wasmCloud 主机发出命令,以达到期望状态。wadm 不断协调,并会立即做出反应,以确保应用程序始终处于部署状态。例如,如果主机停止,wadm 将协调 host_stopped 事件,并在其他可用主机上启动组件所需的任何必要命令。

使用 wadm

Open in GitHub Codespaces

安装 & 运行

您可以通过下载 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