Skip to content

Instantly share code, notes, and snippets.

View matzew's full-sized avatar
💩
hacking hacking hacking!

Matthias Wessendorf matzew

💩
hacking hacking hacking!
  • Red Hat
  • Emsdetten, Germany
View GitHub Profile
@matzew
matzew / serverless-cli.yaml
Created October 30, 2023 15:56 — forked from jerolimov/serverless-cli.yaml
WIP Quick starts to explain Knative functions CLI and IDE
apiVersion: console.openshift.io/v1
kind: ConsoleQuickStart
metadata:
name: serverless-cli
spec:
displayName: Serverless CLI
description: todo
durationMinutes: 10
tags:
- knative

Event Delivery Guarantees with Knative Broker

By default the Knative Broker does a number of retry attempts based on the response code of the Addressable. The entire list is visible here.

The default is 10 reties with exponential backoff and a delay of 0.2 second. Details about the Event-Delivery knobs for the broker can be found here.

Tweaking the broker

Below is a broker that tweaks the default settings for its needs:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: k8s-display
spec:
template:
spec:
containers:
- image: quay.io/openshift-knative/knative-eventing-sources-event-display
---

Event Mesh based on Knative Eventing

In Knative the Broker API is a custom Kubernetes API defining an event mesh for CloudEvents.

Creating a Knative Broker

The Broker APIs can be used as a declarative way to create broker objects, like:

apiVersion: eventing.knative.dev/v1

Assuming Strimzi is running in KAFKA namespace

This pumps date to mytopic:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ws-dumper
spec:

Running kafkacat against Strimzi

Assumption is that you have Strimzi already running as my-cluster-kafka on the kafka namespace.

Deployment for kafkacat

Create a deployment with a recent kafkacat, like:

apiVersion: apps/v1
#!/usr/bin/env bash
set -e
# Turn colors in this script off by setting the NO_COLOR variable in your
# environment to any value:
#
# $ NO_COLOR=1 test.sh
NO_COLOR=${NO_COLOR:-""}
if [ -z "$NO_COLOR" ]; then

Stream Knative HTTP CloudEvents into Apache Kafka

With Knative eventing, you can use a source, to receive events for a 3rd party system, and have them sent as CloudEvents to a HTTP webserver, like:

apiVersion: sources.knative.dev/v1alpha2
kind: PingSource
metadata:
  name: ping-source
spec:
 k logs -f -l serving.knative.dev/service=map-display -c user-container -n debezium-knative-demo

2020-05-28 10:49:32,396 INFO  [io.sma.rea.mes.ext.MediatorManager] (main) Deployment done... start processing
2020-05-28 10:49:32,405 INFO  [io.sma.rea.mes.imp.ConfiguredChannelFactory] (main) Found incoming connectors: [smallrye-kafka]
2020-05-28 10:49:32,406 INFO  [io.sma.rea.mes.imp.ConfiguredChannelFactory] (main) Found outgoing connectors: [smallrye-kafka]
2020-05-28 10:49:32,406 INFO  [io.sma.rea.mes.imp.ConfiguredChannelFactory] (main) Stream manager initializing...
2020-05-28 10:49:32,409 INFO  [io.sma.rea.mes.ext.MediatorManager] (main) Initializing mediators
2020-05-28 10:49:32,410 INFO  [io.sma.rea.mes.ext.MediatorManager] (main) Connecting mediators
### Starting up ###

Creating Knative default Broker as non admin user

Create a consuming service:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: broker-display1
spec: