rokn

module
v0.0.0-...-dfd519d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2020 License: Apache-2.0

README

RabbitMQ Knative Eventing Broker

RabbitMQ Broker for Knative Eventing

Prerequisites

install Knative Serving and Eventing as documented here

create a RabbitMQ cluster:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install rokn bitnami/rabbitmq --set service.type=LoadBalancer

create a secret containing the brokerURL for that cluster:

PASSWORD=$(kubectl get secret --namespace default rokn-rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 --decode)

kubectl create secret generic rokn-rabbitmq-broker-secret \
    --from-literal=brokerURL="amqp://user:$PASSWORD@rokn-rabbitmq.default:5672"

install KEDA as documented here.

Installation

install the broker-controller from this repository:

ko apply -f config/

Demo

create a broker:

kubectl apply -f - << EOF
  apiVersion: eventing.knative.dev/v1beta1
  kind: Broker
  metadata:
    name: default
    annotations:
      eventing.knative.dev/broker.class: RabbitMQBroker
  spec:
    config:
      apiVersion: v1
      kind: Secret
      name: rokn-rabbitmq-broker-secret
EOF

create a trigger:

kubectl apply -f - << EOF
  apiVersion: eventing.knative.dev/v1beta1
  kind: Trigger
  metadata:
    name: ping-trigger
    namespace: default
  spec:
    broker: default
    filter:
      attributes:
        type: dev.knative.sources.ping
    subscriber:
      ref:
        apiVersion: serving.knative.dev/v1
        kind: Service
        name: subscriber
EOF

create a Ping Source:

kubectl apply -f - << EOF
  apiVersion: sources.knative.dev/v1alpha2
  kind: PingSource
  metadata:
    name: ping-source
  spec:
    schedule: "*/1 * * * *"
    jsonData: '{"message": "Hello world!"}'
    sink:
      ref:
        apiVersion: eventing.knative.dev/v1beta1
        kind: Broker
        name: default
EOF

create an event_display subscriber:

kubectl apply -f - << EOF
  apiVersion: serving.knative.dev/v1
  kind: Service
  metadata:
    name: subscriber
    namespace: default
  spec:
    template:
      spec:
        containers:
        - image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display
EOF

tail the logs on the subscriber's depoyment, and you should see a "Hello world!" event once per minute; for example using kail:

$ kail -d subscriber-4kf8l-deployment
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]: ☁️  cloudevents.Event
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]: Validation: valid
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]: Context Attributes,
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]:   specversion: 1.0
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]:   type: dev.knative.sources.ping
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]:   source: /apis/v1/namespaces/default/pingsources/ping-source
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]:   id: 1fec78d7-20c2-459f-ac5e-8a797ca7bcdd
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]:   time: 2020-05-13T17:19:00.000374701Z
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]:   datacontenttype: application/json
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]: Data,
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]:   {
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]:     "message": "Hello world!"
default/subscriber-4kf8l-deployment-8d556d6cd-j669x[user-container]:   }

Directories

Path Synopsis
cmd
pkg
internal/thirdparty/keda/client/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
internal/thirdparty/keda/client/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
internal/thirdparty/keda/client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
internal/thirdparty/keda/client/clientset/versioned/typed/keda/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
internal/thirdparty/keda/client/clientset/versioned/typed/keda/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
internal/thirdparty/keda/v1alpha1
+k8s:deepcopy-gen=package +groupName=keda.k8s.io
+k8s:deepcopy-gen=package +groupName=keda.k8s.io

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL