mirror of
https://github.com/openshift/openshift-docs.git
synced 2026-02-05 12:46:18 +01:00
218 lines
4.9 KiB
Plaintext
218 lines
4.9 KiB
Plaintext
// Module included in the following assemblies:
|
|
//
|
|
// * serverless/eventing/event-sources/serverless-apiserversource.adoc
|
|
|
|
:_mod-docs-content-type: PROCEDURE
|
|
[id="apiserversource-yaml_{context}"]
|
|
= Creating an API server source by using YAML files
|
|
|
|
Creating Knative resources by using YAML files uses a declarative API, which enables you to describe event sources declaratively and in a reproducible manner. To create an API server source by using YAML, you must create a YAML file that defines an `ApiServerSource` object, then apply it by using the `oc apply` command.
|
|
|
|
.Prerequisites
|
|
|
|
* The {ServerlessOperatorName} and Knative Eventing are installed on the cluster.
|
|
* You have created a project or have access to a project with the appropriate roles and permissions to create applications and other workloads in {product-title}.
|
|
* You have created the `default` broker in the same namespace as the one defined in the API server source YAML file.
|
|
* Install the OpenShift CLI (`oc`).
|
|
|
|
.Procedure
|
|
|
|
include::snippets/serverless-service-account-apiserversource.adoc[]
|
|
|
|
. Create an API server source as a YAML file:
|
|
+
|
|
[source,yaml]
|
|
----
|
|
apiVersion: sources.knative.dev/v1alpha1
|
|
kind: ApiServerSource
|
|
metadata:
|
|
name: testevents
|
|
spec:
|
|
serviceAccountName: events-sa
|
|
mode: Resource
|
|
resources:
|
|
- apiVersion: v1
|
|
kind: Event
|
|
sink:
|
|
ref:
|
|
apiVersion: eventing.knative.dev/v1
|
|
kind: Broker
|
|
name: default
|
|
----
|
|
|
|
. Apply the `ApiServerSource` YAML file:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc apply -f <filename>
|
|
----
|
|
|
|
. To check that the API server source is set up correctly, create a Knative service as a YAML file that dumps incoming messages to its log:
|
|
+
|
|
[source,yaml]
|
|
----
|
|
apiVersion: serving.knative.dev/v1
|
|
kind: Service
|
|
metadata:
|
|
name: event-display
|
|
namespace: default
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: quay.io/openshift-knative/knative-eventing-sources-event-display:latest
|
|
----
|
|
|
|
. Apply the `Service` YAML file:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc apply -f <filename>
|
|
----
|
|
|
|
. Create a `Trigger` object as a YAML file that filters events from the `default` broker to the service created in the previous step:
|
|
+
|
|
[source,yaml]
|
|
----
|
|
apiVersion: eventing.knative.dev/v1
|
|
kind: Trigger
|
|
metadata:
|
|
name: event-display-trigger
|
|
namespace: default
|
|
spec:
|
|
broker: default
|
|
subscriber:
|
|
ref:
|
|
apiVersion: serving.knative.dev/v1
|
|
kind: Service
|
|
name: event-display
|
|
----
|
|
|
|
. Apply the `Trigger` YAML file:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc apply -f <filename>
|
|
----
|
|
|
|
. Create events by launching a pod in the default namespace:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc create deployment hello-node --image=quay.io/openshift-knative/knative-eventing-sources-event-display
|
|
----
|
|
|
|
. Check that the controller is mapped correctly, by entering the following command and inspecting the output:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc get apiserversource.sources.knative.dev testevents -o yaml
|
|
----
|
|
+
|
|
.Example output
|
|
[source,yaml]
|
|
----
|
|
apiVersion: sources.knative.dev/v1alpha1
|
|
kind: ApiServerSource
|
|
metadata:
|
|
annotations:
|
|
creationTimestamp: "2020-04-07T17:24:54Z"
|
|
generation: 1
|
|
name: testevents
|
|
namespace: default
|
|
resourceVersion: "62868"
|
|
selfLink: /apis/sources.knative.dev/v1alpha1/namespaces/default/apiserversources/testevents2
|
|
uid: 1603d863-bb06-4d1c-b371-f580b4db99fa
|
|
spec:
|
|
mode: Resource
|
|
resources:
|
|
- apiVersion: v1
|
|
controller: false
|
|
controllerSelector:
|
|
apiVersion: ""
|
|
kind: ""
|
|
name: ""
|
|
uid: ""
|
|
kind: Event
|
|
labelSelector: {}
|
|
serviceAccountName: events-sa
|
|
sink:
|
|
ref:
|
|
apiVersion: eventing.knative.dev/v1
|
|
kind: Broker
|
|
name: default
|
|
----
|
|
|
|
.Verification
|
|
|
|
To verify that the Kubernetes events were sent to Knative, you can look at the message dumper function logs.
|
|
|
|
. Get the pods by entering the following command:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc get pods
|
|
----
|
|
. View the message dumper function logs for the pods by entering the following command:
|
|
+
|
|
[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.apiserver.resource.update
|
|
datacontenttype: application/json
|
|
...
|
|
Data,
|
|
{
|
|
"apiVersion": "v1",
|
|
"involvedObject": {
|
|
"apiVersion": "v1",
|
|
"fieldPath": "spec.containers{hello-node}",
|
|
"kind": "Pod",
|
|
"name": "hello-node",
|
|
"namespace": "default",
|
|
.....
|
|
},
|
|
"kind": "Event",
|
|
"message": "Started container",
|
|
"metadata": {
|
|
"name": "hello-node.159d7608e3a3572c",
|
|
"namespace": "default",
|
|
....
|
|
},
|
|
"reason": "Started",
|
|
...
|
|
}
|
|
----
|
|
|
|
.Deleting the API server source
|
|
|
|
. Delete the trigger:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc delete -f trigger.yaml
|
|
----
|
|
|
|
. Delete the event source:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc delete -f k8s-events.yaml
|
|
----
|
|
|
|
. Delete the service account, cluster role, and cluster binding:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc delete -f authentication.yaml
|
|
----
|