Skip to content

Instantly share code, notes, and snippets.

@matzew
Created June 21, 2019 12:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matzew/8692a920eac2671ef486c4c2faca8d8b to your computer and use it in GitHub Desktop.
Save matzew/8692a920eac2671ef486c4c2faca8d8b to your computer and use it in GitHub Desktop.

Newcastle University WebSocket stream

Knative Serving

Apply this file:

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
  name: event-display
spec:
  template:
    metadata:
      annotations:
        # Target 1 request in-flight per pod.
        autoscaling.knative.dev/target: "1"
    spec:
      containers:
      - image: gcr.io/knative-releases/github.com/knative/eventing-sources/cmd/event_display@sha256:bf45b3eb1e7fc4cb63d6a5a6416cf696295484a7662e0cf9ccdf5c080542c21d

Knative Eventing

Inject the broker into the namespace:

kubectl label namespace default knative-eventing-injection=enabled   

Trigger API

Now, define a trigger for your events:

apiVersion: eventing.knative.dev/v1alpha1
kind: Trigger
metadata:
  name: wss-events-trigger
  namespace: default
spec:
  filter:
    sourceAndType:
      type: my.custom.event
  subscriber:
    ref:
      apiVersion: serving.knative.dev/v1alpha1
      kind: Service
      name: event-display

Some egress...

In order to be able to reach the URL outside of the cluster:

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: urbanobservatory-api
spec:
  hosts:
  - api.usb.urbanobservatory.ac.uk
  ports:
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS
  location: MESH_EXTERNAL
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: urbanobservatory-api
spec:
  hosts:
  - api.usb.urbanobservatory.ac.uk
  tls:
  - match:
    - port: 443
      sni_hosts:
      - api.usb.urbanobservatory.ac.uk
    route:
    - destination:
        host: api.usb.urbanobservatory.ac.uk
        port:
          number: 443
      weight: 100

The WebSocket Source

apiVersion: sources.eventing.knative.dev/v1alpha1
kind: ContainerSource
metadata:
  name: urbanobservatory-event-source
spec:
  image: quay.io/openshift-knative/knative-eventing-sources-websocketsource:v0.5.0 
  args: 
    - '--source=wss://api.usb.urbanobservatory.ac.uk/stream'
    - '--eventType=my.custom.event'
  sink:
    apiVersion: eventing.knative.dev/v1alpha1
    kind: Broker
    name: default
@m7m1m
Copy link

m7m1m commented Jan 8, 2020

account access

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment