mirror of
https://github.com/openshift/openshift-docs.git
synced 2026-02-06 06:46:26 +01:00
192 lines
4.4 KiB
Plaintext
192 lines
4.4 KiB
Plaintext
// Module included in the following assemblies:
|
|
//
|
|
// serverless/event_workflows/serverless-sinkbinding.adoc
|
|
|
|
[id="serverless-sinkbinding-kn_{context}"]
|
|
= Using SinkBinding with the Knative CLI (`kn`)
|
|
|
|
This guide describes the steps required to create, manage, and delete a SinkBinding instance using `kn` commands.
|
|
|
|
.Prerequisites
|
|
|
|
* You have Knative Serving and Eventing installed.
|
|
* You have the `kn` CLI installed.
|
|
|
|
[NOTE]
|
|
====
|
|
The following procedure requires you to create YAML files.
|
|
|
|
If you change the names of the YAML files from those used in the examples, you must ensure that you also update the corresponding CLI commands.
|
|
====
|
|
|
|
[IMPORTANT]
|
|
====
|
|
Before developers can use a SinkBinding, cluster administrators must label the namespace that will be configured in the SinkBinding with `bindings.knative.dev/include:"true"`:
|
|
|
|
[source,terminal]
|
|
----
|
|
$ oc label namespace <namespace> bindings.knative.dev/include=true
|
|
----
|
|
====
|
|
|
|
.Procedure
|
|
|
|
. To check that SinkBinding is set up correctly, create a Knative event display service, or event sink, that dumps incoming messages to its log:
|
|
+
|
|
|
|
[source,terminal]
|
|
----
|
|
$ kn service create event-display --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest
|
|
----
|
|
|
|
. Create a SinkBinding that directs events to the service:
|
|
+
|
|
|
|
[source,terminal]
|
|
----
|
|
$ kn source binding create bind-heartbeat --subject Job:batch/v1:app=heartbeat-cron --sink ksvc:event-display
|
|
----
|
|
|
|
. Create a CronJob.
|
|
.. Create a file named `heartbeats-cronjob.yaml` and copy the following sample code into it:
|
|
+
|
|
|
|
[source,yaml]
|
|
----
|
|
apiVersion: batch/v1beta1
|
|
kind: CronJob
|
|
metadata:
|
|
name: heartbeat-cron
|
|
spec:
|
|
spec:
|
|
# Run every minute
|
|
schedule: "* * * * *"
|
|
jobTemplate:
|
|
metadata:
|
|
labels:
|
|
app: heartbeat-cron
|
|
bindings.knative.dev/include: "true"
|
|
spec:
|
|
template:
|
|
spec:
|
|
restartPolicy: Never
|
|
containers:
|
|
- name: single-heartbeat
|
|
image: quay.io/openshift-knative/knative-eventing-sources-heartbeats:latest
|
|
args:
|
|
- --period=1
|
|
env:
|
|
- name: ONE_SHOT
|
|
value: "true"
|
|
- name: POD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
- name: POD_NAMESPACE
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.namespace
|
|
----
|
|
|
|
+
|
|
[IMPORTANT]
|
|
====
|
|
To use SinkBinding, you must manually add a `bindings.knative.dev/include=true` label to your Knative resources.
|
|
|
|
For example, to add this label to a CronJob instance, add the following lines to the Job resource YAML definition:
|
|
|
|
[source,yaml]
|
|
----
|
|
jobTemplate:
|
|
metadata:
|
|
labels:
|
|
app: heartbeat-cron
|
|
bindings.knative.dev/include: "true"
|
|
----
|
|
|
|
====
|
|
|
|
+
|
|
.. After you have created the `heartbeats-cronjob.yaml` file, apply it by entering:
|
|
+
|
|
|
|
[source,terminal]
|
|
----
|
|
$ oc apply -f heartbeats-cronjob.yaml
|
|
----
|
|
|
|
. Check that the controller is mapped correctly by entering the following command and inspecting the output:
|
|
+
|
|
|
|
[source,terminal]
|
|
----
|
|
$ kn source binding describe bind-heartbeat
|
|
----
|
|
|
|
+
|
|
.Example output
|
|
+
|
|
|
|
[source,terminal]
|
|
----
|
|
Name: bind-heartbeat
|
|
Namespace: demo-2
|
|
Annotations: sources.knative.dev/creator=minikube-user, sources.knative.dev/lastModifier=minikub ...
|
|
Age: 2m
|
|
Subject:
|
|
Resource: job (batch/v1)
|
|
Selector:
|
|
app: heartbeat-cron
|
|
Sink:
|
|
Name: event-display
|
|
Resource: Service (serving.knative.dev/v1)
|
|
|
|
Conditions:
|
|
OK TYPE AGE REASON
|
|
++ Ready 2m
|
|
----
|
|
|
|
.Verification steps
|
|
|
|
You can verify that the Kubernetes events were sent to the Knative event sink by looking at the message dumper function logs.
|
|
|
|
* View the message dumper function logs by entering the following commands:
|
|
+
|
|
|
|
[source,terminal]
|
|
----
|
|
$ oc get pods
|
|
----
|
|
+
|
|
|
|
[source,terminal]
|
|
----
|
|
$ oc logs $(oc get pod -o name | grep event-display) -c user-container
|
|
----
|
|
|
|
+
|
|
.Example output
|
|
+
|
|
|
|
[source,terminal]
|
|
----
|
|
☁️ cloudevents.Event
|
|
Validation: valid
|
|
Context Attributes,
|
|
specversion: 1.0
|
|
type: dev.knative.eventing.samples.heartbeat
|
|
source: https://knative.dev/eventing-contrib/cmd/heartbeats/#event-test/mypod
|
|
id: 2b72d7bf-c38f-4a98-a433-608fbcdd2596
|
|
time: 2019-10-18T15:23:20.809775386Z
|
|
contenttype: application/json
|
|
Extensions,
|
|
beats: true
|
|
heart: yes
|
|
the: 42
|
|
Data,
|
|
{
|
|
"id": 1,
|
|
"label": ""
|
|
}
|
|
----
|