Kubernetes + wasmCloud

Related tags

Utilities kasmcloud
Overview

KasmCloud

Managing and Running Actors, Providers, and Links in Kubernetes

⚠️ 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

Sample

  1. Deploy Nats
$ helm repo add nats https://nats-io.github.io/k8s/helm/charts/
$ helm update
$ helm helm install kasmcloud-nats nats/nats
  1. Deploy KasmCloud
$ kubectl -f ./deploy
  1. Deploy Actor, Link and Provider
$ kubectl apply -f ./sample.yaml

$ kubectl get kasmcloud
NAME                               DESC          PUBLICKEY                                                  LINK   CONTROCTID             IMAGE
provider.kasmcloud.io/httpserver   HTTP Server   VAG3QITQQ2ODAOWB5TTQSDJ53XK3SHBEIFNK4AYJ5RKAX2UNSCAPHA5M   test   wasmcloud:httpserver   wasmcloud.azurecr.io/httpserver:0.17.0

NAME                     ACTORKEY                                                   PROVIDERKEY                                                CONTROCTID
link.kasmcloud.io/test   MBCFOPM6JW2APJLXJD3Z5O4CN7CPYJ2B4FTKLJUR5YR5MITIU7HD3WD5   VAG3QITQQ2ODAOWB5TTQSDJ53XK3SHBEIFNK4AYJ5RKAX2UNSCAPHA5M   wasmcloud:httpserver

NAME                      DESC   PUBLICKEY                                                  REPLICA   CAPS                                                   IMAGE
actor.kasmcloud.io/echo   Echo   MBCFOPM6JW2APJLXJD3Z5O4CN7CPYJ2B4FTKLJUR5YR5MITIU7HD3WD5   10        ["wasmcloud:httpserver","wasmcloud:builtin:logging"]   wasmcloud.azurecr.io/echo:0.3.8
  1. curl echo server
$ # other terminal
$ kubectl port-forward service/kasmcloud-echo-http-server 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
Comments
  • add server flags to webhook command

    add server flags to webhook command

    Feature or Problem

    $ make build-webhook
    $ ./bin/webhook -h
    Usage of ./bin/webhook:
      -cert-dir string
            The webhook cert dir (default "/tmp/k8s-webhook-server/serving-certs/")
      -health-probe-bind-address string
            The address the probe endpoint binds to. (default ":8081")
      -kubeconfig string
            Paths to a kubeconfig. Only required if out-of-cluster.
      -metrics-bind-address string
            The address the metric endpoint binds to. (default ":8080")
      -port int
            The webhook Server port (default 9443)
      -zap-devel
            Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) (default true)
      -zap-encoder value
            Zap log encoding (one of 'json' or 'console')
      -zap-log-level value
            Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', or any integer value > 0 which corresponds to custom debug levels of increasing verbosity
      -zap-stacktrace-level value
            Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic').
      -zap-time-encoding value
            Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'.
    

    Related Issues

    Release Information

    Consumer Impact

    Testing

    Built on platform(s)

    • [x] x86_64-linux
    • [x] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows

    Tested on platform(s)

    • [x] x86_64-linux
    • [x] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows

    Unit Test(s)

    Acceptance or Integration

    Manual Verification

    opened by Iceber 0
  • update resource defaulter and validater

    update resource defaulter and validater

    Feature or Problem

    Related Issues

    Release Information

    Consumer Impact

    Testing

    Built on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [ ] aarch64-darwin
    • [ ] x86_64-windows

    Tested on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [ ] aarch64-darwin
    • [ ] x86_64-windows

    Unit Test(s)

    Acceptance or Integration

    Manual Verification

    opened by Iceber 0
  • add scale subresource for actors

    add scale subresource for actors

    Feature or Problem

    $ kubectl scale --replicas=30 actor echo
    

    Related Issues

    Release Information

    Consumer Impact

    Testing

    Built on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows

    Tested on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows

    Unit Test(s)

    Acceptance or Integration

    Manual Verification

    opened by Iceber 0
  • add tracing log and support otel

    add tracing log and support otel

    Feature or Problem

    Related Issues

    Release Information

    Consumer Impact

    Testing

    Built on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows

    Tested on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows

    Unit Test(s)

    Acceptance or Integration

    Manual Verification

    opened by Iceber 0
  • add linkName field to Link

    add linkName field to Link

    Feature or Problem

    Using only the name of a Link resource does not make it the name of a LinkDefinition; a Link with the same name is used to associate a different actor with a different contract_id.

    A LinkDefinition is identified using sha256 for actor_key, contract_id and link_name.

    Related Issues

    Release Information

    Consumer Impact

    Testing

    Built on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows

    Tested on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows

    Unit Test(s)

    Acceptance or Integration

    Manual Verification

    opened by Iceber 0
  • move actor.replica to actor.replicas

    move actor.replica to actor.replicas

    Feature or Problem

    Related Issues

    Release Information

    Consumer Impact

    Testing

    Built on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [ ] aarch64-darwin
    • [ ] x86_64-windows

    Tested on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [ ] aarch64-darwin
    • [ ] x86_64-windows

    Unit Test(s)

    Acceptance or Integration

    Manual Verification

    opened by Iceber 0
  • change to use kubebuilder to generate crds and sync the struct of resources

    change to use kubebuilder to generate crds and sync the struct of resources

    Feature or Problem

    Related Issues

    Release Information

    Consumer Impact

    Testing

    Built on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows

    Tested on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows

    Unit Test(s)

    Acceptance or Integration

    Manual Verification

    opened by Iceber 0
  • init resource webhook server

    init resource webhook server

    Feature or Problem

    Initializing a webhook server for resources with kubebuilder

    Related Issues

    Release Information

    Consumer Impact

    Testing

    Built on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [ ] aarch64-darwin
    • [ ] x86_64-windows

    Tested on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [ ] aarch64-darwin
    • [ ] x86_64-windows

    Unit Test(s)

    Acceptance or Integration

    Manual Verification

    opened by Iceber 0
  • init kasmcloud with kubebuilder

    init kasmcloud with kubebuilder

    Feature or Problem

    Use kubebuilder to initialize your project.

    For developing kubernetes applications, golang is more appropriate. kubebuilder simplifies webhook and upper level application development.

    Related Issues

    Release Information

    Consumer Impact

    Testing

    Built on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [ ] aarch64-darwin
    • [ ] x86_64-windows

    Tested on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [ ] aarch64-darwin
    • [ ] x86_64-windows

    Unit Test(s)

    Acceptance or Integration

    Manual Verification

    opened by Iceber 0
  • chore: fix sample commands in README.md

    chore: fix sample commands in README.md

    Feature or Problem

    Sample commands were not working due to typos.

    Tested on platform(s)

    • [ ] x86_64-linux
    • [ ] aarch64-linux
    • [ ] x86_64-darwin
    • [x] aarch64-darwin
    • [ ] x86_64-windows
    opened by 0xE282B0 0
Owner
wasmcloud
Bringing joy to the act of building distributed applications with low boilerplate, secure by default WebAssembly modules. CNCF sandbox application runtime.
wasmcloud
A crate to implement leader election for Kubernetes workloads in Rust.

Kubernetes Leader Election in Rust This library provides simple leader election for Kubernetes workloads.

Hendrik Maus 33 Dec 29, 2022
💫 Small microservice to handle state changes of Kubernetes pods and post them to Instatus or Statuspages

?? Kanata Small microservice to handle state changes of Kubernetes pods and post to Instatus ?? Why? I don't really want to implement and repeat code

Noel ʕ •ᴥ•ʔ 4 Mar 4, 2022
kubernetes openapi unmangler

kopium A kubernetes openapi unmangler. Creates rust structs from a named crd by converting the live openapi schema. ⚠️ WARNING: ALPHA SOFTWARE ⚠️ Inst

kube-rs 48 Jan 3, 2023
Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications

Continuous Delivery for Declarative Kubernetes, Serverless and Infrastructure Applications Explore PipeCD docs » Overview PipeCD provides a unified co

PipeCD 650 Dec 29, 2022
engula-operator creates/configures/manages engula clusters atop Kubernetes

Engula Operator The engula operator manages engula clusters deployed to Kubernetes and automates tasks related to operating an engula cluster. Backgro

小母牛坐飞机 12 Apr 27, 2022
Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x.

Linkerd ?? Welcome to Linkerd! ?? Linkerd is an ultralight, security-first service mesh for Kubernetes. Linkerd adds critical security, observability,

Linkerd 9.2k Jan 1, 2023
Northstar is a horizontally scalable and multi-tenant Kubernetes cluster provisioner and orchestrator

Northstar Northstar is a horizontally scalable and multi-tenant Kubernetes cluster provisioner and orchestrator. Explore the docs » View Demo · Report

Lucas Clerisse 1 Jan 22, 2022
Rust Kubernetes runtime helpers. Based on kube-rs.

kubert Rust Kubernetes runtime helpers. Based on kube-rs. Features clap command-line interface support; A basic admin server with /ready and /live pro

Oliver Gould 63 Dec 17, 2022
The last kubernetes tool you'll ever need.

Neatkube The last kubernetes tool you'll ever need. Kubernetes is a mess. Everthing ships it's own command line tools that you need to install and tra

git repositories with lazers 5 Aug 3, 2022
KFtray - A tray application that manages port forwarding in Kubernetes.

Ktray is written in Rust and React, with Tauri framework. The app simplifies the process of starting and stopping multiple port forwarding configurations through a user-friendly interface.

Henrique Cavarsan 42 Dec 17, 2023
H2O Open Source Kubernetes operator and a command-line tool to ease deployment (and undeployment) of H2O open-source machine learning platform H2O-3 to Kubernetes.

H2O Kubernetes Repository with official tools to aid the deployment of H2O Machine Learning platform to Kubernetes. There are two essential tools to b

H2O.ai 16 Nov 12, 2022
A Kubernetes implementation of the Open Application Model specification

Rudr ?? NOTE: Rudr is deprecated in favor of the upcoming open application platform project as its successor. There are no plans to produce future rel

Open Application Model 1.6k Jan 4, 2023
An example of a Kubernetes operator implemented in Rust

Rust Kubernetes operator example A Kubernetes operator built on top of kube-rs project. There is an explanatory article available. Steps to run on Lin

Pavel Pscheidl 91 Jan 1, 2023
KDash - A fast and simple dashboard for Kubernetes

KDash - A fast and simple dashboard for Kubernetes

null 915 Jan 4, 2023
Krustlet: Kubernetes Kubelet in Rust for running WASM

Krustlet: Kubernetes Kubelet in Rust for running WASM ?? ?? This project is highly experimental. ?? ?? It should not be used in production workloads.

null 103 Dec 29, 2022
Detects orphan configmaps and secrets in a Kubernetes cluster

KubExplorer Warning: Proof of concept. Feedback is much welcome. Discovers and prints out any Configmaps and Secrets not linked to any of the followin

Pavel Pscheidl 56 Oct 21, 2022
A crate to implement leader election for Kubernetes workloads in Rust.

Kubernetes Leader Election in Rust This library provides simple leader election for Kubernetes workloads.

Hendrik Maus 33 Dec 29, 2022
Rust command line utility to quickly display useful secrets in a Kubernetes namespace

kube-secrets This is a command line utility for quickly looking at secrets in a Kubernetes namespace that are typically looked at by humans. It specif

Frank Wiles 8 Feb 10, 2022
Rust Kubernetes client and controller runtime

kube-rs Rust client for Kubernetes in the style of a more generic client-go, a runtime abstraction inspired by controller-runtime, and a derive macro

kube-rs 1.8k Jan 8, 2023
💫 Small microservice to handle state changes of Kubernetes pods and post them to Instatus or Statuspages

?? Kanata Small microservice to handle state changes of Kubernetes pods and post to Instatus ?? Why? I don't really want to implement and repeat code

Noel ʕ •ᴥ•ʔ 4 Mar 4, 2022