Skip to content
/ deployer Public

Deploy a Web Assembly enabled container runtime into kubernetes

License

Notifications You must be signed in to change notification settings

knawd/deployer

deployer

Deploy a Web Assembly enabled container runtime into kubernetes to enable the use of WASM services in public, private and edge scenarios.

See https://knawd.dev for more information on how to build Web Assembly services using this system.

build status OpenSSF Best Practices Artifact Hub

Overview

This project deploys a custom build of the latest crun release with WASMEdge/wasmtime/wasm-nodejs support and provides a helm chart and executable to assist with the deployment.

Install

Please see the instructions in the helm chart README.

Topology

topology

The node configuration is preformed by a container deployed on each node by the daemonset.

The container copies files to 3 locations on each node, restarts the container runtime service (crio or containerd) and applies a knative configuration:

  1. The /lib or /lib64 folder contains the shared objects libwasmedge.so.0 or libwasmtime.so or libnode.so

  2. The /usr/local/sbin folder to deploy the OCI executable e.g. crun

  3. The additional runtime configuration is added to either the crio.conf or the containerd config.toml

  4. The namespace role grants access to the host system while the cluster roles grants access to the config map resources.

Secuirty Considerations

  • The daemonset requires access to the host OS and uses the hostpid to restart the host runtimes

  • A cluster role is used to update config maps

  • It's strongly recommended that no other workloads are deployed into the same namespace

Supported Versions

Runtimes

Release WASMEdge WASMtime node-wasm crun
v1.2.0 0.11.2 5.0.0 experiment 1.8

Kubernetes Versions

Ubuntu OpenShift microk8s microshift
18.04, 20.04 4.10, 4.11 1.26.1 4.12

N.B. Red Hat Core OS based instances have still to be tested and we expect some issues modifying the crio config and copying the WASM libs to the host.

CPU Architectures

amd64 arm64 ppc64
🟢 🟢 🔴

N.B. Work on nodejs-wasm may provide support for ppc64.

Contributions

Please read the CONTRIBUTING.md it has some important notes. Pay specific attention to the Coding style guidelines and the Developer Certificate of Origin

Code Of Conduct

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

The full code of conduct is available here