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.
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.
Please see the instructions in the helm chart README.
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:
-
The
/lib
or/lib64
folder contains the shared objectslibwasmedge.so.0
orlibwasmtime.so
orlibnode.so
-
The
/usr/local/sbin
folder to deploy the OCI executable e.g.crun
-
The additional runtime configuration is added to either the
crio.conf
or the containerdconfig.toml
-
The namespace role grants access to the host system while the cluster roles grants access to the config map resources.
-
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
Release | WASMEdge | WASMtime | node-wasm | crun |
---|---|---|---|---|
v1.2.0 | 0.11.2 | 5.0.0 | experiment | 1.8 |
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.
amd64 | arm64 | ppc64 |
---|---|---|
🟢 | 🟢 | 🔴 |
N.B. Work on nodejs-wasm may provide support for ppc64.
Please read the CONTRIBUTING.md it has some important notes. Pay specific attention to the Coding style guidelines and the Developer Certificate of Origin
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.