wa8s
is an experimental library for interacting with WebAssembly Components in a Kubernetes cluster.
The components
package contains the core building blocks to resolve, compose, publish and create static components.
The registries
package defines OCI repositories where components can be published.
By default an authenticated ClusterRepository
is provided. It's hosted in cluster as a scratch space for intermediate components. State in this repository is ephemerial. Components must be published to a durable repository before they are consumed outside of wa8s.
The containers
package converts a component into a traditional OCI container, typically with Wasmtime embedded. Using containers is a compatibility layer to run within environments that don't natively support wasm components.
Running a container requires publishing the container image to a repository the cluster is able to pull from. The default registry is not accessible to the cluster.
You’ll need a Kubernetes cluster to run against. You can use kind to get a local cluster for testing, or run against a remote cluster.
cert-manager
and reconciler.io/ducks
are required in the cluster. They can be installed via make deploy-cert-manager
and make deploy-ducks
for default configurations.
The easiest way to get started is by deploying the latest release. Alternatively, you can build from source.
-
Define where to publish images:
export KO_DOCKER_REPO=<a-repository-you-can-write-to>
For kind, a registry is not required (or run
make kind-deploy
):export KO_DOCKER_REPO=kind.local
-
Build and deploy the controller to the cluster:
Note: The cluster must have the cert-manager deployed. There is a
make deploy-cert-manager
target to deploy the cert-manager.make deploy
Undeploy the controller to the cluster:
make undeploy
The reconciler.io projects follow the Contributor Covenant Code of Conduct. In short, be kind and treat others with respect.
General discussion and questions about the project can occur either on the Kubernetes Slack #reconcilerio channel, or in the project's GitHub discussions. Use the channel you find most comfortable.
The reconciler.io wa8s project team welcomes contributions from the community. A contributor license agreement (CLA) is not required. You own full rights to your contribution and agree to license the work to the community under the Apache License v2.0, via a Developer Certificate of Origin (DCO). For more detailed information, refer to CONTRIBUTING.md.
This project was conceived in discussion with Mark Fisher.
Apache License v2.0: see LICENSE for details.