Cloud Events - Rust

    1. The default mode has the app reply to your input events with the output event, which is simplest for demonstrating things working in isolation, but is also the model for working for the Knative Eventing concept. The input event is modified assigning a new source and type attribute.

    2. K_SINK mode has the app send events to the destination encoded in $K_SINK, which is useful to demonstrate how folks can synthesize events to send to a Service or Broker when not initiated by a Broker invocation (e.g. implementing an event source). The input event is modified assigning a new source and type attribute.

    The application will use $K_SINK-mode whenever the environment variable is specified.

    Follow the steps below to create the sample code and then deploy the app to your cluster. You can also download a working copy of the sample by running the following commands:

    • A Kubernetes cluster with Knative installed and DNS configured. Follow the installation instructions if you need to create one.
    • installed and running on your local machine, and a Docker Hub account configured (we’ll use it for a container registry).
    • This guide uses Rust musl toolchain to build the image in order to create really small docker images. To install the Rust toolchain: rustup. To install musl support: .

    To build the binary, run:

    1. cargo build --target x86_64-unknown-linux-musl --release
    1. docker build -t <image> .

    To deploy the Knative Service, look in the service.yaml and replace <image> with the deployed image name. Then run:

    If using kn to deploy:

    1. kn service create cloudevents-rust --image=<image>

    Get the URL for your Service with:

    1. $ kubectl get ksvc
    2. cloudevents-rust http://cloudevents-rust.xip.io cloudevents-rust-vl8fq cloudevents-rust-vl8fq True

    Then send a CloudEvent to it with:

    You can also send CloudEvents spawning a temporary curl pod in your cluster with:

    1. --image=curlimages/curl --rm=true --restart=Never -ti -- \
    2. -X POST -v \
    3. -H "content-type: application/json" \
    4. -H "ce-specversion: 1.0" \
    5. -H "ce-source: http://curl-command" \
    6. -H "ce-type: curl.demo" \
    7. -H "ce-id: 123-abc" \
    8. -d '{"name":"Dave"}' \
    9. http://cloudevents-rust.default.svc
    1. > POST / HTTP/1.1
    2. > Host: localhost:8080
    3. > User-Agent: curl/7.69.1
    4. > Accept: */*
    5. > content-type: application/json
    6. > ce-source: http://curl-command
    7. > ce-type: curl.demo
    8. > ce-id: 123-abc
    9. > Content-Length: 15
    10. >
    11. < HTTP/1.1 200 OK
    12. < content-length: 15
    13. < content-type: application/json
    14. < ce-specversion: 1.0
    15. < ce-id: 123-abc
    16. < ce-type: dev.knative.docs.sample
    17. < ce-source: https://github.com/knative/docs/docs/serving/samples/cloudevents/cloudevents-rust
    18. < date: Sat, 23 May 2020 09:00:01 GMT
    19. <

    To remove the sample app from your cluster, delete the service.

    Run:

    Run:

    1. kn service delete cloudevents-rust

    Was this page helpful?

    Glad to hear it! Please .