Skip to content

scothis/wa8s

 
 

Repository files navigation

Reconciler.io WebAssemblies for Kubernetes (wa8s)

CI GoDoc Go Report Card codecov

wa8s is an experimental library for interacting with WebAssembly Components in a Kubernetes cluster.

Overview

Components

The components package contains the core building blocks to resolve, compose, publish and create static components.

Registries

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.

Containers

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.

Getting Started

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.

Deploy a released build

The easiest way to get started is by deploying the latest release. Alternatively, you can build from source.

Build from source

  1. 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
  2. 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 controller

Undeploy the controller to the cluster:

make undeploy

Community

Code of Conduct

The reconciler.io projects follow the Contributor Covenant Code of Conduct. In short, be kind and treat others with respect.

Communication

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.

Contributing

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.

Acknowledgements

This project was conceived in discussion with Mark Fisher.

License

Apache License v2.0: see LICENSE for details.

About

WebAssemblies for Kubernetes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 91.2%
  • Rust 6.0%
  • Makefile 2.0%
  • Shell 0.8%