mirror of https://github.com/knative/docs.git
Remove Eventing Migration (#2898)
- `ContainerSource` is still supported, so there is no migration to do. - `CronJobSource` has been removed in 0.13. Signed-off-by: Pierangelo Di Pilato <pierangelodipilato@gmail.com>
This commit is contained in:
parent
a5c233f793
commit
39e502def4
|
@ -1,6 +0,0 @@
|
|||
Knative Eventing in version 0.13 does deprecate a few resources and
|
||||
introduces new constructs for fine-grained control
|
||||
over underlying resources.
|
||||
This document provides a collection of such examples:
|
||||
* [PingSource](./ping.md) migration from `CronJobSource`.
|
||||
* [SinkBinding](./sinkbinding.md) alternative to `ContainerSource`.
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
title: "Migration"
|
||||
linkTitle: "Migration"
|
||||
weight: 31
|
||||
type: "docs"
|
||||
---
|
||||
|
||||
{{% readfile file="README.md" %}}
|
|
@ -1,47 +0,0 @@
|
|||
---
|
||||
title: "Migrating from CronJobSource to the PingSource"
|
||||
weight: 20
|
||||
type: "docs"
|
||||
aliases:
|
||||
- /docs/eventing/ping.md
|
||||
---
|
||||
|
||||
In 0.13, the deprecated `CronJobSource` should be converted to the `PingSource`.
|
||||
|
||||
The YAML file for a `CronJobSource` that emits events to a Knative Serving service will look similar to this:
|
||||
|
||||
```yaml
|
||||
apiVersion: sources.knative.dev/v1alpha1
|
||||
kind: CronJobSource
|
||||
metadata:
|
||||
name: cronjob-source
|
||||
spec:
|
||||
schedule: "* * * * *"
|
||||
data: '{"message": "Hello world!"}'
|
||||
sink:
|
||||
apiVersion: serving.knative.dev/v1
|
||||
kind: Service
|
||||
name: event-display
|
||||
```
|
||||
|
||||
To migrate this source to a `PingSource`, the following steps are required::
|
||||
|
||||
* Different `apiVersion` and `kind` between the two
|
||||
* `PingSource` uses the `jsonData` attribute instead of the `data` attribute.
|
||||
|
||||
The updated YAML for `PingSource` will look similar to the following:
|
||||
|
||||
```yaml
|
||||
apiVersion: sources.knative.dev/v1alpha2
|
||||
kind: PingSource
|
||||
metadata:
|
||||
name: ping-source
|
||||
spec:
|
||||
schedule: "* * * * *"
|
||||
jsonData: '{"message": "Hello world!"}'
|
||||
sink:
|
||||
ref:
|
||||
apiVersion: serving.knative.dev/v1
|
||||
kind: Service
|
||||
name: event-display
|
||||
```
|
|
@ -1,121 +0,0 @@
|
|||
---
|
||||
title: "SinkBinding alternative to ContainerSource"
|
||||
weight: 20
|
||||
type: "docs"
|
||||
aliases:
|
||||
- /docs/eventing/sinkbinding.md
|
||||
---
|
||||
|
||||
`ContainerSource` can be seen as the combination of
|
||||
`SinkBinding`+`Deployment`. In fact, that
|
||||
is exactly how it's implemented!
|
||||
|
||||
In YAML, these two options are equivalent:
|
||||
|
||||
1. `ContainerSource` that emits events to a `Knative Service`:
|
||||
|
||||
```yaml
|
||||
apiVersion: sources.knative.dev/v1beta1
|
||||
kind: ContainerSource
|
||||
metadata:
|
||||
name: urbanobservatory-event-source
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- image: quay.io/openshift-knative/knative-eventing-sources-websocketsource:latest
|
||||
args:
|
||||
- '--source=wss://api.usb.urbanobservatory.ac.uk/stream'
|
||||
- '--eventType=my.custom.event'
|
||||
sink:
|
||||
ref:
|
||||
apiVersion: serving.knative.dev/v1
|
||||
kind: Service
|
||||
name: wss-event-display
|
||||
```
|
||||
|
||||
2. `SinkBinding` + `Deployment`. Something like the following:
|
||||
|
||||
```yaml
|
||||
apiVersion: sources.knative.dev/v1alpha2
|
||||
kind: SinkBinding
|
||||
metadata:
|
||||
name: bind-wss
|
||||
spec:
|
||||
subject:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
selector:
|
||||
matchLabels:
|
||||
app: wss
|
||||
sink:
|
||||
ref:
|
||||
apiVersion: serving.knative.dev/v1
|
||||
kind: Service
|
||||
name: wss-event-display
|
||||
```
|
||||
|
||||
Here the `SinkBinding`'s `subject` references to a Kubernetes
|
||||
`Deployment`, that is labeled with `app: wss`. This is done with
|
||||
the `subject.selector` field, which is a standard Kubernetes
|
||||
Label Selector object. Note that you could explicitly set a
|
||||
`Deployment` name and namespace in `subject` (i.e., `subject.name`
|
||||
and `subject.namespace`) instead of using `subject.selector`.
|
||||
The YAML for the `Deployment` looks like:
|
||||
|
||||
```yaml
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: wss
|
||||
labels:
|
||||
app: wss
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: wss
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: wss
|
||||
spec:
|
||||
containers:
|
||||
- image: quay.io/openshift-knative/knative-eventing-sources-websocketsource:latest
|
||||
name: wss
|
||||
args:
|
||||
- '--source=wss://api.usb.urbanobservatory.ac.uk/stream'
|
||||
- '--eventType=my.custom.event'
|
||||
```
|
||||
|
||||
The `Deployment` is a standard Kubernetes Deployment, like you might have used before. However, the important part
|
||||
here is that it has the `app: wss` label, which is needed by the above `SinkBinding` in order to _bind_ the
|
||||
two components together.
|
||||
|
||||
In both cases, the `image` is required to understand
|
||||
the semantics of the `K_SINK` environment variable, which holds
|
||||
the destination endpoint for sending CloudEvents.
|
||||
|
||||
Running any of the above examples will give a log similar to:
|
||||
|
||||
```
|
||||
☁️ cloudevents.Event
|
||||
Validation: valid
|
||||
Context Attributes,
|
||||
specversion: 1.0
|
||||
type: my.custom.event
|
||||
source: wss://api.usb.urbanobservatory.ac.uk/stream
|
||||
id: 3029a2f2-3ce1-48c0-9ed3-37d7ad88d0ef
|
||||
time: 2020-03-05T13:46:15.329595422Z
|
||||
Data,
|
||||
{"signal":2,"data":{"brokerage":{"broker":{"id":"BMS-USB-5-JACE","meta":{"protocol":"BACNET","building":"Urban Sciences Building","buildingFloor":"5"}},"id":"Drivers.L6_C3_Electric_Meters.C3_Mechcanical_Plant.points.C3_HP_Current_L1","meta":{}},"entity":{"name":"Urban Sciences Building: Floor 5","meta":{"building":"Urban Sciences Building","buildingFloor":"5"}},"feed":{"metric":"C3 HP Current L1","meta":{}},"timeseries":{"unit":"no units","value":{"time":"2020-03-05T13:45:51.468Z","timeAccuracy":8.754,"data":0.47110211849212646,"type":"Real"}}},"recipients":0}
|
||||
```
|
||||
|
||||
## When to use SinkBinding?
|
||||
|
||||
From the above options, `ContainerSource` is probably the less
|
||||
verbose.
|
||||
However, the true power of `SinkBinding` comes from the fact that
|
||||
it can work not just with `Deployments`
|
||||
but with **any** PodSpecable (e.g., `StatefulSet`, `ReplicateSet`,
|
||||
`DaemonSet`, `Knative Service`, etc.).
|
||||
If you do need that flexibility, we highly recommend you to use `SinkBinding`.
|
Loading…
Reference in New Issue