Code Monkey home page Code Monkey logo

krustlet's Introduction

โš ๏ธ This project is currently not actively maintained. Most of the other maintainers have moved on to other WebAssembly related projects. This project could definitely still be useful to anyone who wants to write a custom Kubelet and its sister project Krator is a state machine-based solution for writing Kubernetes controllers/operators in Rust. If anyone is interested in maintaining these projects, please feel free to reach out!

CII Best Practices

Krustlet: Kubernetes Kubelet in Rust for running WASM

๐Ÿ“ฏ Krustlet 1.0 coming soon!

Krustlet acts as a Kubelet by listening on the event stream for new pods that the scheduler assigns to it based on specific Kubernetes tolerations.

The default implementation of Krustlet listens for the architecture wasm32-wasi and schedules those workloads to run in a wasmtime-based runtime instead of a container runtime.

Documentation

If you're new to the project, get started with the introduction. For more in-depth information about Krustlet, plunge right into the topic guides.

Looking for the developer guide? Start here.

Community, discussion, contribution, and support

You can reach the Krustlet community and developers via the following channels:

Code of Conduct

This project has adopted the CNCF Code of Conduct.

krustlet's People

Contributors

adamreese avatar alexeldeib avatar alexellis avatar bacongobbler avatar bketelsen avatar dazwilkin avatar derekstrickland avatar ereslibre avatar itowlson avatar jiayihu avatar jlegrone avatar jose-acevedoflores avatar jwhb avatar kate-goldenring avatar kesselborn avatar kflansburg avatar matsbror avatar nunix avatar olivierlemasle avatar owenthereal avatar peterhuene avatar porges avatar rylev avatar siegfriedweber avatar soenkeliebau avatar squillace avatar technosophos avatar thomastaylor312 avatar vishnujin avatar zyy17 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

krustlet's Issues

Fully implement kubelet logs path

The current implementation in the get_container_logs function is incomplete. This should parse the proper data from the request and call the provider

Get Status from provider

Right now each provider updates the pod status itself. This should be done in the Kubelet logic by calling the provider's status method. Also, status should return an array of container statuses that should be set on the pod as well

investigate how to test github actions

I've seen tools coming out like act where you can simulate an event payload to test your github actions locally. To prevent cases like #108, it'd be great to describe a good workflow for testing out your changes to an action and document it as part of the developer guide.

Opening this mainly for my own benefit, but hopefully providing some guidance may assist others looking to add new features to our workflows (as well as provide others a way to test changes being made to the workflow)

Create instructions for running a Krustlet node with AKS

We should have detailed instructions for configuring and using Krustlet as an AKS node. This first set of instructions does not need to be a fully production ready node (as the project itself isn't ready for full production yet either). Learning how to do it with AKS should make it easy for us to write instructions for other Kubernetes providers

OCI Registry: Add top-level `pull` method

RIght now, to use the OCI registry, you need to create a registry, then auth, then pull the manifest, then open a destination location, and fetch each layer.

We should have a top-level pull() function that takes an image and some kind of "where to store stuff" object, and can do the entire OCI thing.

Setup actions pipelines

We are currently missing automated testing in the project. Add a GH action pipeline for automated testing

Update example wasm & signing keys

[2020-02-28T20:13:02Z INFO  krustlet::pod] Pod status for greet set to Failed
[2020-02-28T20:13:02Z ERROR krustlet::kubelet] Error handling event: Failed to run pod: Error loading WASM: Embedded JWT failure: Invalid JWT algorithm. WASCAP only supports Ed25519
[2020-02-28T20:13:02Z INFO  krustlet::wasm] Pod modified```

sample wasm file appears to have invalid signature, probably due to wascc version bump.

hello-wascc demo

We need a more fully featured demo application for the wasCC provider. This example should have the code we use to compile the module and a pod spec that loads user specified env vars, and env vars from the downward API/config maps/ secrets. These env vars should be printed out via an http request to the pod

write a github action to upload compiled assets

To prepare for the 0.1.0 release, we should set up a post-merge github action to produce a package containing krustlet, the README and the LICENSE file.

https://help.github.com/en/actions/publishing-packages-with-github-actions/about-packaging-with-github-actions

https://help.github.com/en/packages/publishing-and-managing-packages/about-github-packages

Or we can use my github action and upload the packages to WABS: https://github.com/marketplace/actions/azure-blob-storage-upload

Create wascc demo in Rust

This example should have the code we use to compile the module and a pod spec that loads user specified env vars, and env vars from the downward API/config maps/secrets. These env vars should be printed out via an http request to the pod

Create wasi demo in C or C++

This example should have the code we use to compile the module and a pod spec that loads user specified env vars, and env vars from the downward API/config maps/secrets. These env vars should be printed out and then retrieved via kubectl logs

Create wascc demo in AssemblyScript

This example should have the code we use to compile the module and a pod spec that loads user specified env vars, and env vars from the downward API/config maps/secrets. These env vars should be printed out via an http request to the pod

Dockerfile broken

After the reorganization of the source tree, the Dockerfile is broken.

To reproduce: just dockerize

docker build -t technosophos/krustlet:latest .
Sending build context to Docker daemon  69.88MB
Step 1/10 : FROM rust:1.38
 ---> fc49eca6d556
Step 2/10 : WORKDIR /usr/src/krustlet
 ---> Using cache
 ---> 02a6518a8129
Step 3/10 : COPY Cargo.toml .
 ---> Using cache
 ---> 366b13167d9f
Step 4/10 : COPY Cargo.lock .
 ---> Using cache
 ---> 0462042211db
Step 5/10 : RUN mkdir -p ./src/ &&     echo 'fn main() {}' > ./src/main.rs &&     echo '' > ./src/lib.rs
 ---> Using cache
 ---> 64e072664c46
Step 6/10 : RUN cargo fetch
 ---> Running in c6bc04d3bb5c
error: failed to read `/usr/src/krustlet/crates/*/Cargo.toml`

Caused by:
  No such file or directory (os error 2)
The command '/bin/sh -c cargo fetch' returned a non-zero code: 101
error: Recipe `dockerize` failed on line 23 with exit code 101

Create wasi demo in AssemblyScript

This example should have the code we use to compile the module and a pod spec that loads user specified env vars, and env vars from the downward API/config maps/secrets. These env vars should be printed out and then retrieved via kubectl logs

Windows support

Currently, trying to run the build on a clean Windows machine fails (see action run and workflow definition):

2020-03-03T00:27:54.3571851Z error: failed to run custom build command for `openssl-sys v0.9.53`
2020-03-03T00:27:54.3571945Z 
2020-03-03T00:27:54.3572085Z Caused by:
2020-03-03T00:27:54.3572259Z   process didn't exit successfully: `D:\a\krustlet\krustlet\target\debug\build\openssl-sys-97d80117f436f29e\build-script-main` (exit code: 101)
2020-03-03T00:27:54.3572584Z --- stdout
2020-03-03T00:27:54.3572658Z cargo:rustc-cfg=const_fn
2020-03-03T00:27:54.3572786Z cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_LIB_DIR
2020-03-03T00:27:54.3572911Z X86_64_PC_WINDOWS_MSVC_OPENSSL_LIB_DIR unset
2020-03-03T00:27:54.3573028Z cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
2020-03-03T00:27:54.3573102Z OPENSSL_LIB_DIR unset
2020-03-03T00:27:54.3573226Z cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_INCLUDE_DIR
2020-03-03T00:27:54.3573353Z X86_64_PC_WINDOWS_MSVC_OPENSSL_INCLUDE_DIR unset
2020-03-03T00:27:54.3573477Z cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
2020-03-03T00:27:54.3573552Z OPENSSL_INCLUDE_DIR unset
2020-03-03T00:27:54.3573676Z cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR
2020-03-03T00:27:54.3573807Z X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR unset
2020-03-03T00:27:54.3573929Z cargo:rerun-if-env-changed=OPENSSL_DIR
2020-03-03T00:27:54.3574001Z OPENSSL_DIR unset
2020-03-03T00:27:54.3574166Z note: vcpkg did not find openssl as libcrypto and libssl: Could not find Vcpkg tree: No vcpkg.user.targets found. Set the VCPKG_ROOT environment variable or run 'vcpkg integrate install'
2020-03-03T00:27:54.3574355Z note: vcpkg did not find openssl as ssleay32 and libeay32: Could not find Vcpkg tree: No vcpkg.user.targets found. Set the VCPKG_ROOT environment variable or run 'vcpkg integrate install'
2020-03-03T00:27:54.3574468Z 
2020-03-03T00:27:54.3574537Z --- stderr
2020-03-03T00:27:54.3574650Z thread 'main' panicked at '
2020-03-03T00:27:54.3574738Z 
2020-03-03T00:27:54.3574819Z Could not find directory of OpenSSL installation, and this `-sys` crate cannot
2020-03-03T00:27:54.3574955Z proceed without this knowledge. If OpenSSL is installed and this crate had
2020-03-03T00:27:54.3575090Z trouble finding it,  you can set the `OPENSSL_DIR` environment variable for the
2020-03-03T00:27:54.3575213Z compilation process.
2020-03-03T00:27:54.3575255Z 
2020-03-03T00:27:54.3575482Z Make sure you also have the development packages of openssl installed.
2020-03-03T00:27:54.3575582Z For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora.
2020-03-03T00:27:54.3575670Z 
2020-03-03T00:27:54.3575784Z If you're in a situation where you think the directory *should* be found
2020-03-03T00:27:54.3575940Z automatically, please open a bug at https://github.com/sfackler/rust-openssl
2020-03-03T00:27:54.3576089Z and include information about your system as well as this message.
2020-03-03T00:27:54.3576181Z 
2020-03-03T00:27:54.3576252Z $HOST = x86_64-pc-windows-msvc
2020-03-03T00:27:54.3576368Z $TARGET = x86_64-pc-windows-msvc
2020-03-03T00:27:54.3576484Z openssl-sys = 0.9.53
2020-03-03T00:27:54.3576524Z 
2020-03-03T00:27:54.3576612Z 
2020-03-03T00:27:54.3576689Z It looks like you're compiling for MSVC but we couldn't detect an OpenSSL
2020-03-03T00:27:54.3576825Z installation. If there isn't one installed then you can try the rust-openssl
2020-03-03T00:27:54.3576967Z README for more information about how to download precompiled binaries of
2020-03-03T00:27:54.3577074Z OpenSSL:
2020-03-03T00:27:54.3577113Z 
2020-03-03T00:27:54.3577243Z https://github.com/sfackler/rust-openssl#windows

Note that the static compilation of the OCI library might also affect the ability to support Windows.

bug: feature flags not respected

With something listening on port 3000 and specifying a different port, krustlet-wascc and krustlet-wasi both seem to ignore these parameters, reverting to the default values.

><> ../../target/debug/krustlet-wascc --help
krustlet 0.1.0
A kubelet for running WebAssembly workloads

USAGE:
    krustlet-wascc [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -a, --addr <addr>              The address krustlet should listen on [env: KRUSTLET_ADDRESS=]  [default: 0.0.0.0]
        --hostname <hostname>      The hostname for this node, defaults to the hostname of this machine [env: KRUSTLET_HOSTNAME=]
    -n, --node-ip <node-ip>        The IP address of the node registered with the Kubernetes master. Defaults to the IP address of the node name in DNS as a best effort try at a default [env: KRUSTLET_NODE_IP=]
        --node-name <node-name>    The name for this node in Kubernetes, defaults to the hostname of this machine [env: KRUSTLET_NODE_NAME=]
    -p, --port <port>              The port krustlet should listen on [env: KRUSTLET_PORT=]  [default: 3000]
><> ../../target/debug/krustlet-wascc --port 8080
[2020-03-12T22:48:14Z ERROR kubelet::node] Error creating node: ApiError: nodes "ultralisk" already exists: AlreadyExists (ErrorResponse { status: "Failure", message: "nodes \"ultralisk\" already exists", reason: "AlreadyExists", code: 409 })
[2020-03-12T22:48:14Z ERROR kubelet::node] Failed to create lease: ApiError: leases.coordination.k8s.io "ultralisk" already exists: AlreadyExists (ErrorResponse { status: "Failure", message: "leases.coordination.k8s.io \"ultralisk\" already exists", reason: "AlreadyExists", code: 409 })
thread 'main' panicked at 'error binding to 0.0.0.0:3000: error creating server listener: Address already in use (os error 98)', /home/bacongobbler/.cargo/registry/src/github.com-1ecc6299db9ec823/hyper-0.13.3/src/server/mod.rs:124:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

The same issue appears when using environment variables.

><> export KRUSTLET_PORT=8080
><> ../../target/debug/krustlet-wascc 
[2020-03-12T22:52:22Z ERROR kubelet::node] Error creating node: ApiError: nodes "ultralisk" already exists: AlreadyExists (ErrorResponse { status: "Failure", message: "nodes \"ultralisk\" already exists", reason: "AlreadyExists", code: 409 })
[2020-03-12T22:52:22Z ERROR kubelet::node] Failed to create lease: ApiError: leases.coordination.k8s.io "ultralisk" already exists: AlreadyExists (ErrorResponse { status: "Failure", message: "leases.coordination.k8s.io \"ultralisk\" already exists", reason: "AlreadyExists", code: 409 })
thread 'main' panicked at 'error binding to 0.0.0.0:3000: error creating server listener: Address already in use (os error 98)', /home/bacongobbler/.cargo/registry/src/github.com-1ecc6299db9ec823/hyper-0.13.3/src/server/mod.rs:124:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Implement init containers for all runtimes

Each pod's init containers should be run in order and to completion before starting the others. We likely want to finish discussion on #21 before we do this as this would be a blocking operation as we wait for each container

Better error handling for logs

Right now the error returned to the user with kubectl logs if something fails during the call to Provider.logs is always "Not Implemented." It should be smarter and return the proper error code and a useful message

hello-wasi demo

We need a more fully featured demo application for the WASI provider. This example should have the code we use to compile the module and a pod spec that loads user specified env vars, and env vars from the downward API/config maps/ secrets. These env vars should be printed out and then retrieved via kubectl logs

Proper node configuration

Right now, Krustlet uses a bunch of hardcoded values for creating the Node object in Kubernetes (such as the IP address and hostname). We should follow similar patterns to normal kubelet for configuring these values, so part of this task will be investigating how kubelet does it in mainline Kubernetes.

Implement a bare minimum OCI Registry pull client

The only complete OCI Registry client I have found is written in Go. While we've had luck linking that into Rust, I think we might be able to implement a minimal pull mode specifically for fetching WASM modules out of an OCI registry.

Out of scope for this minimal first version:

  • push
  • multi-layers (unless we find them necessary)
  • TUF

Create a team cargo account

For the github action, we're currently using a personal token to release krustlet to crates.io. We should create a team account and use that instead.

Wat

wat

So, is this basically a rust-implemented kubelet variant for running server-side WASM code? I am confused.

Node configuration

As it stands right now, the only thing we can configure with node details is the architecture (as implemented in #17). What kind of configuration would we like to pass to the node when it registers itself with the cluster?

feat: lowercase the operating system names for the release workflow

Right now, the GitHub action spits out the following files:

We should find a way to lowercase those names.

Response from GitHub support:

Someone shared a workaround with me for this exact issue using Bash syntax I wasn't familiar with:

    OS=${{ runner.os }}
    echo ${OS,,}

So ${OS,,} has the lowercase version of ${ runner.os }.

We might be able to play around with that.

Lease creation fails

[2020-02-28T20:11:41Z ERROR krustlet::node] Failed to create lease: ApiError BadRequest ("Lease in version \"v1\" cannot be handled as a Lease: v1.Lease.Spec: v1.LeaseSpec.RenewTime: unmarshalerDecoder: parsing time \"2020-02-28T20:11:41.636526400Z\" as \"2006-01-02T15:04:05.000000Z07:00\": cannot parse \"400Z\" as \"Z07:00\", error found in #10 byte of ...|36526400Z\"}}|..., bigger context ...|\":300,\"renewTime\":\"2020-02-28T20:11:41.636526400Z\"}}|...")
[2020-02-28T20:11:41Z INFO  krustlet::server] starting webserver at: V4(0.0.0.0:3000)
[2020-02-28T20:11:42Z ERROR krustlet::node] Failed to create lease: ApiError NotFound ("leases.coordination.k8s.io \"krustlet\" not found")```

Use https for kubelet server

Looks like the default when running kubectl logs is https:

I0306 13:28:41.340057   66934 request.go:1017] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Get https://192.168.64.1:3000/containerLogs/default/greet/greet: http: server gave HTTP response to HTTPS client","code":500}
I0306 13:28:41.340861   66934 helpers.go:203] server response object: [{
  "metadata": {},
  "status": "Failure",
  "message": "Get https://192.168.64.1:3000/containerLogs/default/greet/greet: http: server gave HTTP response to HTTPS client",
  "code": 500
}]
F0306 13:28:41.341007   66934 helpers.go:114] Error from server: Get https://192.168.64.1:3000/containerLogs/default/greet/greet: http: server gave HTTP response to HTTPS client

We need to implement https support for the kubelet server

Move from failure to anyhow

We agreed awhile back that we wanted to switch to the anyhow crate over the failure crate. This will need to be done in all of our crates simultaneously to avoid error conversions or other conflicts

Listen on all namespaces

When I first created Krustlet, I had it only listening for Pod events on one namespace (since that worked fine for testing). I think this should listen on all namespaces. See kubelet.rs

Are the optional fields on Kubernetes API objects properly handled?

Because of the very loose nature of Kubernetes API definitions when it comes to nullability, the k8s-openapi crate wraps all fields in optional. We are currently handling this by generously using unwrap_or_default on the fields. Is this correct? Are there any times where fields not being set would be a fatal error or even a recoverable error?

bug(wascc): panicked on an `Err` value: Error(HostCallFailure("bad dispatch")

Running just test-e2e on master displays the following error from the wascc provider:

     Running `/home/bacongobbler/code/krustlet/target/debug/krustlet-wascc --node-name krustlet-wascc --port 3000`
[2020-03-17T21:51:16Z INFO  wascc_host::capability] Loaded capability: wascc:http_server, native provider: waSCC Default HTTP Server (Actix Web)
[2020-03-17T21:51:16Z INFO  wascc_host::host] Native capability provider 'wascc:http_server' ready
[2020-03-17T21:51:27Z DEBUG wascc_provider] Pod added "hello-wascc"
[2020-03-17T21:51:27Z DEBUG wascc_provider] "MB4OLDIC3TCZ4Q4TGGOVAZC43VXFE2JQVRAXQMQFXUCREOOFEKOKZTY2"
[2020-03-17T21:51:27Z INFO  wascc_provider] Starting containers for pod "hello-wascc"
[2020-03-17T21:51:27Z DEBUG wascc_provider] Starting container hello-wascc on thread
[2020-03-17T21:51:27Z INFO  wascc_provider] wascc run
[2020-03-17T21:51:27Z INFO  wascc_host::authz] Discovered capability attestations: wascc:http_server
[2020-03-17T21:51:27Z INFO  wascc_host::host] Native capability provider 'wascc:extras' ready
[2020-03-17T21:51:27Z INFO  wascc_host::host] Adding actor MB4OLDIC3TCZ4Q4TGGOVAZC43VXFE2JQVRAXQMQFXUCREOOFEKOKZTY2 to host
[2020-03-17T21:51:27Z INFO  wascc_host::host] Loading actor module...
[2020-03-17T21:51:29Z INFO  wascc_host::host] Actor MB4OLDIC3TCZ4Q4TGGOVAZC43VXFE2JQVRAXQMQFXUCREOOFEKOKZTY2 ready for communications
[2020-03-17T21:51:29Z INFO  wascc_provider] configuring capability wascc:http_server
[2020-03-17T21:51:29Z INFO  wascc_host::host] Attempting to configure actor MB4OLDIC3TCZ4Q4TGGOVAZC43VXFE2JQVRAXQMQFXUCREOOFEKOKZTY2 for capability wascc:http_server
[2020-03-17T21:51:29Z INFO  wascc_host::host] Capability wascc:http_server received invocation for target wascc:http_server
[2020-03-17T21:51:29Z INFO  wascc_provider] Instance executing
[2020-03-17T21:51:29Z INFO  wascc_provider] All containers started for pod "hello-wascc". Updating status
[2020-03-17T21:51:29Z INFO  wascc_provider] Pod modified
[2020-03-17T21:51:29Z INFO  wascc_provider] Modified pod spec: PodStatus {
        conditions: Some(
            [
                PodCondition {
                    last_probe_time: None,
                    last_transition_time: Some(
                        Time(
                            2020-03-17T21:51:27Z,
                        ),
                    ),
                    message: None,
                    reason: None,
                    status: "True",
                    type_: "PodScheduled",
                },
            ],
        ),
        container_statuses: None,
        ephemeral_container_statuses: None,
        host_ip: None,
        init_container_statuses: None,
        message: None,
        nominated_node_name: None,
        phase: Some(
            "Pending",
        ),
        pod_ip: None,
        pod_ips: None,
        qos_class: Some(
            "BestEffort",
        ),
        reason: None,
        start_time: None,
    }
[2020-03-17T21:51:29Z INFO  wascc_provider] Pod modified
[2020-03-17T21:51:29Z INFO  wascc_provider] Modified pod spec: PodStatus {
        conditions: Some(
            [
                PodCondition {
                    last_probe_time: None,
                    last_transition_time: Some(
                        Time(
                            2020-03-17T21:51:27Z,
                        ),
                    ),
                    message: None,
                    reason: None,
                    status: "True",
                    type_: "PodScheduled",
                },
            ],
        ),
        container_statuses: None,
        ephemeral_container_statuses: None,
        host_ip: None,
        init_container_statuses: None,
        message: None,
        nominated_node_name: None,
        phase: Some(
            "Pending",
        ),
        pod_ip: None,
        pod_ips: None,
        qos_class: Some(
            "BestEffort",
        ),
        reason: None,
        start_time: None,
    }
[2020-03-17T21:51:29Z INFO  wascc_host::host] Terminating actor MB4OLDIC3TCZ4Q4TGGOVAZC43VXFE2JQVRAXQMQFXUCREOOFEKOKZTY2
[2020-03-17T21:51:29Z INFO  wascc_host::host] Capability wascc:http_server received invocation for target wascc:http_server
[2020-03-17T21:51:29Z INFO  wascc_host::host] Capability wascc:extras received invocation for target wascc:extras
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: Error(HostCallFailure("bad dispatch"))', /home/bacongobbler/.cargo/registry/src/github.com-1ecc6299db9ec823/wascc-host-0.5.2/src/middleware.rs:45:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: RecvError', /home/bacongobbler/.cargo/registry/src/github.com-1ecc6299db9ec823/wascc-host-0.5.2/src/host.rs:520:24

Create wasi demo in Rust

This example should have the code we use to compile the module and a pod spec that loads user specified env vars, and env vars from the downward API/config maps/secrets. These env vars should be printed out and then retrieved via kubectl logs

Making things Async

Bringing up the discussion question of: Should we make kubelet and all providers async? This would involve using tokio as it is the underlying runtime for wasmtime as well.

Create wascc demo in C or C++

This example should have the code we use to compile the module and a pod spec that loads user specified env vars, and env vars from the downward API/config maps/secrets. These env vars should be printed out via an http request to the pod

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.