From 40f3fd5725c6f6ac9708dc5ae62174839d5ae6b5 Mon Sep 17 00:00:00 2001 From: Scott Nichols <32305648+n3wscott@users.noreply.github.com> Date: Fri, 10 May 2019 17:09:38 -0700 Subject: [PATCH] Update KubernetesEventSource to use ApiServerSource (#1307) --- .../samples/kubernetes-event-source/README.md | 65 ++++++++++++++++--- .../samples/kubernetes-event-source/_index.md | 2 +- .../kubernetes-event-source/k8s-events.yaml | 8 ++- .../serviceaccount.yaml | 9 ++- .../kubernetes-event-source/trigger.yaml | 1 + docs/eventing/sources/README.md | 2 +- 6 files changed, 69 insertions(+), 18 deletions(-) diff --git a/docs/eventing/samples/kubernetes-event-source/README.md b/docs/eventing/samples/kubernetes-event-source/README.md index 6c1070081..0c57e3f72 100644 --- a/docs/eventing/samples/kubernetes-event-source/README.md +++ b/docs/eventing/samples/kubernetes-event-source/README.md @@ -21,8 +21,8 @@ kubectl label namespace default knative-eventing-injection=enabled ### Service Account -1. Create a Service Account that the `Receive Adapter` runs as. The - `Receive Adapater` watches for Kubernetes events and forwards them to the +1. Create a Service Account that the `ApiServerSource` runs as. The + `ApiServerSource` watches for Kubernetes events and forwards them to the Knative Eventing Broker. If you want to re-use an existing Service Account with the appropriate permissions, you need to modify the `serviceaccount.yaml`. @@ -44,11 +44,11 @@ kubectl apply --filename k8s-events.yaml ### Trigger -In order to check the `KubernetesEventSource` is fully working, we will create a +In order to check the `ApiServerSource` is fully working, we will create a simple Knative Service that dumps incoming messages to its log and creates a `Trigger` from the `Broker` to that Knative Service. -1. If the deployed `KubernetesEventSource` is pointing at a `Broker` other than +1. If the deployed `ApiServerSource` is pointing at a `Broker` other than `default`, modify `trigger.yaml` by adding `spec.broker` with the `Broker`'s name. @@ -83,15 +83,62 @@ kubectl logs -l serving.knative.dev/service=event-display -c user-container You should see log lines similar to: ``` -{"metadata":{"name":"busybox.15644359eaa4d8e7","namespace":"default","selfLink":"/api/v1/namespaces/default/events/busybox.15644359eaa4d8e7","uid":"daf8d3ca-e10d-11e8-bf3c-42010a8a017d","resourceVersion":"7840","creationTimestamp":"2018-11-05T15:17:05Z"},"involvedObject":{"kind":"Pod","namespace":"default","name":"busybox","uid":"daf645df-e10d-11e8-bf3c-42010a8a017d","apiVersion":"v1","resourceVersion":"681388"},"reason":"Scheduled","message":"Successfully assigned busybox to gke-knative-eventing-e2e-default-pool-575bcad9-vz55","source":{"component":"default-scheduler"},"firstTimestamp":"2018-11-05T15:17:05Z","lastTimestamp":"2018-11-05T15:17:05Z","count":1,"type":"Normal","eventTime":null,"reportingComponent":"","reportingInstance":""} -Ce-Source: /apis/v1/namespaces/default/pods/busybox -{"metadata":{"name":"busybox.15644359f59f72f2","namespace":"default","selfLink":"/api/v1/namespaces/default/events/busybox.15644359f59f72f2","uid":"db14ff23-e10d-11e8-bf3c-42010a8a017d","resourceVersion":"7841","creationTimestamp":"2018-11-05T15:17:06Z"},"involvedObject":{"kind":"Pod","namespace":"default","name":"busybox","uid":"daf645df-e10d-11e8-bf3c-42010a8a017d","apiVersion":"v1","resourceVersion":"681389"},"reason":"SuccessfulMountVolume","message":"MountVolume.SetUp succeeded for volume \"default-token-pzr6x\" ","source":{"component":"kubelet","host":"gke-knative-eventing-e2e-default-pool-575bcad9-vz55"},"firstTimestamp":"2018-11-05T15:17:06Z","lastTimestamp":"2018-11-05T15:17:06Z","count":1,"type":"Normal","eventTime":null,"reportingComponent":"","reportingInstance":""} -Ce-Source: /apis/v1/namespaces/default/pods/busybox +☁️ CloudEvent: valid ✅ +Context Attributes, + SpecVersion: 0.2 + Type: dev.knative.apiserver.resource.add + Source: https://10.39.240.1:443 + ID: 716d4536-3b92-4fbb-98d9-14bfcf94683f + Time: 2019-05-10T23:27:06.695575294Z + ContentType: application/json + Extensions: + knativehistory: default-broker-b7k2p-channel-z7mqq.default.svc.cluster.local + subject: /apis/v1/namespaces/default/events/busybox.159d7608e3a3572c +Transport Context, + URI: / + Host: auto-event-display.default.svc.cluster.local + Method: POST +Data, + { + "apiVersion": "v1", + "count": 1, + "eventTime": null, + "firstTimestamp": "2019-05-10T23:27:06Z", + "involvedObject": { + "apiVersion": "v1", + "fieldPath": "spec.containers{busybox}", + "kind": "Pod", + "name": "busybox", + "namespace": "default", + "resourceVersion": "28987493", + "uid": "1efb342a-737b-11e9-a6c5-42010a8a00ed" + }, + "kind": "Event", + "lastTimestamp": "2019-05-10T23:27:06Z", + "message": "Started container", + "metadata": { + "creationTimestamp": "2019-05-10T23:27:06Z", + "name": "busybox.159d7608e3a3572c", + "namespace": "default", + "resourceVersion": "506088", + "selfLink": "/api/v1/namespaces/default/events/busybox.159d7608e3a3572c", + "uid": "2005af47-737b-11e9-a6c5-42010a8a00ed" + }, + "reason": "Started", + "reportingComponent": "", + "reportingInstance": "", + "source": { + "component": "kubelet", + "host": "gke-knative-auto-cluster-default-pool-23c23c4f-xdj0" + }, + "type": "Normal" + } ``` ### Cleanup -You can remove the `Service Account`, `Event Sources`, and `Trigger` via: +You can remove the `ServiceAccount`, `ClusterRoles`, `ClusterRoleBinding`, +`ApiSeverSource`, `Service` and `Trigger` via: ```shell kubectl --namespace default delete --filename serviceaccount.yaml diff --git a/docs/eventing/samples/kubernetes-event-source/_index.md b/docs/eventing/samples/kubernetes-event-source/_index.md index 9ce2db823..4dbcf5340 100644 --- a/docs/eventing/samples/kubernetes-event-source/_index.md +++ b/docs/eventing/samples/kubernetes-event-source/_index.md @@ -1,5 +1,5 @@ --- -title: "Kubernetes event source" +title: "Kubernetes Api Server Source" linkTitle: "Kubernetes event" weight: 50 type: "docs" diff --git a/docs/eventing/samples/kubernetes-event-source/k8s-events.yaml b/docs/eventing/samples/kubernetes-event-source/k8s-events.yaml index 43da2e7c6..4990b23ee 100644 --- a/docs/eventing/samples/kubernetes-event-source/k8s-events.yaml +++ b/docs/eventing/samples/kubernetes-event-source/k8s-events.yaml @@ -1,10 +1,14 @@ apiVersion: sources.eventing.knative.dev/v1alpha1 -kind: KubernetesEventSource +kind: ApiServerSource metadata: name: testevents -spec: namespace: default +spec: serviceAccountName: events-sa + mode: Resource + resources: + - apiVersion: v1 + kind: Event sink: apiVersion: eventing.knative.dev/v1alpha1 kind: Broker diff --git a/docs/eventing/samples/kubernetes-event-source/serviceaccount.yaml b/docs/eventing/samples/kubernetes-event-source/serviceaccount.yaml index 53749a55a..726086ca9 100644 --- a/docs/eventing/samples/kubernetes-event-source/serviceaccount.yaml +++ b/docs/eventing/samples/kubernetes-event-source/serviceaccount.yaml @@ -7,9 +7,8 @@ metadata: --- apiVersion: rbac.authorization.k8s.io/v1 -kind: Role +kind: ClusterRole metadata: - creationTimestamp: null name: event-watcher rules: - apiGroups: @@ -24,15 +23,15 @@ rules: --- apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding +kind: ClusterRoleBinding metadata: - creationTimestamp: null name: k8s-ra-event-watcher roleRef: apiGroup: rbac.authorization.k8s.io - kind: Role + kind: ClusterRole name: event-watcher subjects: - kind: ServiceAccount name: events-sa namespace: default + diff --git a/docs/eventing/samples/kubernetes-event-source/trigger.yaml b/docs/eventing/samples/kubernetes-event-source/trigger.yaml index 0d8bf8368..f5965f53e 100644 --- a/docs/eventing/samples/kubernetes-event-source/trigger.yaml +++ b/docs/eventing/samples/kubernetes-event-source/trigger.yaml @@ -11,6 +11,7 @@ spec: name: event-display --- + # This is a very simple Knative Service that writes the input request to its log. apiVersion: serving.knative.dev/v1alpha1 diff --git a/docs/eventing/sources/README.md b/docs/eventing/sources/README.md index 561a0e3a2..159e158b7 100644 --- a/docs/eventing/sources/README.md +++ b/docs/eventing/sources/README.md @@ -36,7 +36,7 @@ These are sources that are installed as `CRD`s. | [GitLab](https://gitlab.com/triggermesh/gitlabsource) | Proof of Concept | None | Registers for events of the specified types on the specified GitLab repository. Brings those events into Knative. | | [Google Cloud Scheduler](https://github.com/vaikas-google/csr) | Active Development | None | Create, update, and delete [Google Cloud Scheduler](https://cloud.google.com/scheduler/) Jobs. When those jobs are triggered, receive the event inside Knative. | | [Google Cloud Storage](https://github.com/vaikas-google/gcs) | Active Development | None | Registers for events of the specified types on the specified Google Cloud Storage bucket and optional object prefix. Brings those events into Knative. | -| [Kubernetes](https://github.com/knative/eventing-sources/blob/master/pkg/apis/sources/v1alpha1/kuberneteseventsource_types.go) | Active Development | Knative | Brings Kubernetes cluster events into Knative. Uses ContainerSource for underlying infrastructure. | +| [Kubernetes Api Server](https://github.com/knative/eventing/blob/master/pkg/apis/sources/v1alpha1/apiserver_types.go) | Active Development | Knative | Brings Kubernetes resource changes into Knative as references or as full resources. | ## Meta Sources