1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/modules/apiserversource-yaml.adoc
2023-10-30 10:13:25 -04:00

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
----