KasmCloud
Managing and Running Actors, Providers, and Links in Kubernetes
## :warning:Warning
**This is a contributor-led experimental project and is not recommended to run in production at this time.**
With each tag, it works fine, but there may be incompatible changes between tags.
## Design
[Combining WasmCloud with Kubernetes](https://docs.google.com/document/d/16p-9czZ6GT_layiabGE6HTyVpbYSALjoyxXhgIfYW0s/edit#heading=h.ymjg4q1g3smk)
## Quick Start
1. Deploy Nats
```bash
helm repo add nats https://nats-io.github.io/k8s/helm/charts/
helm repo update
helm upgrade --install kasmcloud-nats nats/nats
```
2. Deploy KasmCloud CRDs and Webhook Server
```bash
kubectl apply -f ./deploy/crds
kubectl apply -f ./deploy/webhook
```
3. Deploy KasmCloud Host
```bash
kubectl apply -f ./deploy/kasmcloud_host_rbac.yaml
# Deploy Default KasmCloud Host
kubectl apply -f ./deploy/kasmcloud_host_default.yaml
# [Optional] You can also deploy KasmCloud Host in each Kubernetes node.
kubectl apply -f ./deploy/kasmcloud_host_daemonset.yaml
# [Optional] You can also deploy as many temporary hosts as you want
# and change the number of temporary hosts by scaling the Deployment
kubectl apply -f ./deploy/kasmcloud_host_deployment.yaml
```
4. Deploy Actor, Link and Provider Sample
```bash
kubectl apply -f ./sample.yaml
kubectl get kasmcloud
```
Output is similar to:
```console
NAME DESC PUBLICKEY REPLICAS AVAILABLEREPLICAS CAPS IMAGE
actor.kasmcloud.io/echo-default Echo MBCFOPM6JW2APJLXJD3Z5O4CN7CPYJ2B4FTKLJUR5YR5MITIU7HD3WD5 10 10 ["wasmcloud:httpserver","wasmcloud:builtin:logging"] wasmcloud.azurecr.io/echo:0.3.8
NAME CONTRACTID LINK ACTORYKEY PROVIDERKEY
link.kasmcloud.io/httpserver-echo wasmcloud:httpserver test MBCFOPM6JW2APJLXJD3Z5O4CN7CPYJ2B4FTKLJUR5YR5MITIU7HD3WD5 VAG3QITQQ2ODAOWB5TTQSDJ53XK3SHBEIFNK4AYJ5RKAX2UNSCAPHA5M
NAME DESC PUBLICKEY LINK CONTRACTID IMAGE
provider.kasmcloud.io/httpserver-default HTTP Server VAG3QITQQ2ODAOWB5TTQSDJ53XK3SHBEIFNK4AYJ5RKAX2UNSCAPHA5M test wasmcloud:httpserver ghcr.io/iceber/wasmcloud/httpserver:0.17.0-index
```
5. curl echo server
```bash
# other terminal
kubectl port-forward pod/kasmcloud-host-default 8080:8080
curl 127.0.0.1:8080
{"body":[],"method":"GET","path":"/","query_string":""}
```
## RoadMap
* Add KasmCloudHost resource
* Add status information for the resource
* Add Kasmcloud Repeater module
* Add rolling updates for Actor
* Add DaemonSet deployment for Actor
* Blue/Green Deployment for Actors and Providers
## Reference
- [kasmcloud repo](https://github.com/wasmCloud/kasmcloud)