diff --git a/docs/eventing/README.md b/docs/eventing/README.md index 2cf68ddf4..9916f501d 100644 --- a/docs/eventing/README.md +++ b/docs/eventing/README.md @@ -137,17 +137,13 @@ messaging protocols. Each source is a separate Kubernetes custom resource. This allows each type of Source to define the arguments and parameters needed to instantiate a source. -Knative Eventing defines the following Sources in the -`sources.eventing.knative.dev` API group. Types below are declared in golang -format, but may be expressed as simple lists, etc in YAML. All Sources should be -part of the `sources` category, so you can list all existing Sources with -`kubectl get sources`. The currently-implemented Sources are described below. +All Sources should be part of the `sources` category, so you can list all existing Sources with +`kubectl get sources`. -In addition to the core sources (explained below), there are +In addition to the sources explained below, there are [other sources](./sources/README.md) that you can install. - -If you need a Source not covered by the -[available Source implementations](./sources/README.md), there is a +If you need a Source not covered by the ones mentioned below nor by the other +[available implementations](./sources/README.md), there is a [tutorial on writing your own Source with kubebuilder](./samples/writing-a-source/README.md) as well as an [extended tutorial on writing a Source with Receive Adapter](./samples/writing-receive-adapter-source). @@ -156,216 +152,67 @@ If your code needs to send events as part of its business logic and doesn't fit the model of a Source, consider [feeding events directly to a Broker](https://knative.dev/docs/eventing/broker-trigger/#manual). -### APIServerSource +### Core Sources + +These are the core sources that come out-of-the-box when installing Knative Eventing. + +#### APIServerSource The APIServerSource fires a new event each time a Kubernetes resource is created, updated or deleted. -See the [Kubernetes API Server Source](samples/kubernetes-event-source) example. +See the [Kubernetes API Server Source](samples/kubernetes-event-source) example for more details. -### GitHubSource +#### PingSource + +The PingSource fires events based on given +[Cron](https://en.wikipedia.org/wiki/Cron) schedule. + +See the [Ping Source](samples/ping-source) example for more details. + +#### ContainerSource + +The ContainerSource will instantiate container image(s) that can generate events +until the ContainerSource is deleted. This may be used (for example) to poll an +FTP server for new files or generate events at a set time interval. + +Refer to the [Container Source](samples/container-source) example for more details. + +#### SinkBinding + +The SinkBinding can be used to author new event sources using any of the +familiar compute abstractions that Kubernetes makes available (e.g. Deployment, +Job, DaemonSet, StatefulSet), or Knative abstractions (e.g. Service, +Configuration). + +See the [SinkBinding](samples/container-source) example for more details. + +### Eventing Contrib Sources + +This is a non-exhaustive list of Sources supported by our community and maintained +in the [Knative Eventing-Contrib](https://github.com/knative/eventing-contrib) Github repo. + +#### GitHubSource The GitHubSource fires a new event for selected [GitHub event types](https://developer.github.com/v3/activity/events/types/). -**Spec fields**: +See the [GitHub Source](samples/github-source) example for more details. -- `ownerAndRepository`: `string` The GitHub owner/org and repository to receive - events from. The repository may be left off to receive events from an entire - organization. -- `eventTypes`: `[]string` A list of - [event types](https://developer.github.com/v3/activity/events/types/) in - "Webhook event name" format (lower_case). -- `accessToken.secretKeyRef`: - [SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - containing a GitHub access token for configuring a GitHub webhook. One of this - or `secretToken` must be set. -- `secretToken.secretKeyRef`: - [SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - containing a GitHub secret token for configuring a GitHub webhook. One of this - or `accessToken` must be set. -- `serviceAccountName`: `string` The name of the ServiceAccount to run the - container as. -- `sink`: - [ObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#objectreference-v1-core) - A reference to the object that should receive events. -- `githubAPIURL`: `string` Optional field to specify the base URL for API - requests. Defaults to the public GitHub API if not specified, but can be set - to a domain endpoint to use with GitHub Enterprise, for example, - `https://github.mycompany.com/api/v3/`. This base URL should always be - specified with a trailing slash. - -See the [GitHub Source](samples/github-source) example. - -### CloudPubSubSource - -The CloudPubSubSource fires a new event each time a message is published on a -[Google Cloud Platform PubSub topic](https://cloud.google.com/pubsub/). - -**Spec fields**: - -- `topic`: `string` The name of the PubSub topic. -- `sink`: - [Destination](https://github.com/knative/pkg/blob/master/apis/duck/v1/destination.go) - A reference to the target that should receive events. -- `secret`: - [SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - Credential to use to poll the Cloud Pub/Sub Subscription. It is not used to create or delete the Subscription, only to poll it. - The value of the secret entry must be a service account key in the JSON format (see https://cloud.google.com/iam/docs/creating-managing-service-account-keys). Defaults to secret.name of 'google-cloud-key' and secret.key of 'key.json'. -- `project`: `string` ID of the Google Cloud Project that the Pub/Sub Topic exists in. If omitted uses the Project ID from the GKE cluster metadata service. - -See the [CloudPubSubSource](samples/cloud-pubsub-source) example. - -### CloudStorageSource - -Registers for events of the specified types on the specified -[Google Cloud Storage](https://cloud.google.com/storage/) bucket and optional object prefix. -Brings those events into Knative. - -**Spec fields**: - -- `bucket`: `string` GCS bucket to subscribe to. For example my-test-bucket. -- `sink`: - [Destination](https://github.com/knative/pkg/blob/master/apis/duck/v1/destination.go) - A reference to the target that should receive events. -- `secret`: - [SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - Credential to use for managing GCS notifications. - The value of the secret entry must be a service account key in the JSON format (see https://cloud.google.com/iam/docs/creating-managing-service-account-keys). Defaults to secret.name of 'google-cloud-key' and secret.key of 'key.json'. -- `project`: `string` ID of the Google Cloud Project that the Pub/Sub Topic exists in. If omitted uses the Project ID from the GKE cluster metadata service. - -See the [CloudStorageSource](samples/cloud-storage-source) example. - -### CloudSchedulerSource - -Create, update, and delete [Google Cloud Scheduler](https://cloud.google.com/scheduler/) Jobs. -When those jobs are triggered, receive the event inside Knative. - -**Spec fields**: - -- `location`: `string` Location to create the Scheduler job in. -- `data`: `string` Data to send in the payload of the Event. -- `schedule`: `string` Frequency using the unix-cron format. Or App Engine Cron format. -- `sink`: - [Destination](https://github.com/knative/pkg/blob/master/apis/duck/v1/destination.go) - A reference to the target that should receive events. -- `secret`: - [SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - Credential to use for managing Scheduler Jobs. - The value of the secret entry must be a service account key in the JSON format (see https://cloud.google.com/iam/docs/creating-managing-service-account-keys). Defaults to secret.name of 'google-cloud-key' and secret.key of 'key.json'. -- `project`: `string` ID of the Google Cloud Project that the Pub/Sub Topic exists in. If omitted uses the Project ID from the GKE cluster metadata service. - -See the [CloudSchedulerSource](samples/cloud-scheduler-source) example. - -### CloudAuditLogsSource - -Registers for events of the specified types on the specified [Google Cloud Audit Logs](https://cloud.google.com/logging/docs/audit/). Brings those events into Knative. - -**Spec fields**: - -- `serviceName`: `string` The GCP service providing audit logs. -- `methodName`: `string` The name of the service method or operation. For API calls, this should be the name of the API method. -- `resourceName`: `string` The resource or collection that is the target of the operation. The name is a scheme-less URI, not including the API service name. If omitted, audit log events matching service and method will be pulled for all resources. -- `sink`: - [Destination](https://github.com/knative/pkg/blob/master/apis/duck/v1/destination.go) - A reference to the target that should receive events. -- `secret`: - [SecretKeySelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - Credential used to pull Stackdriver audit log pubsub messages. - The value of the secret entry must be a service account key in the JSON format (see https://cloud.google.com/iam/docs/creating-managing-service-account-keys). Defaults to secret.name of 'google-cloud-key' and secret.key of 'key.json'. -- `project`: `string` ID of the Google Cloud Project that the Pub/Sub Topic exists in. If omitted uses the Project ID from the GKE cluster metadata service. - -See the [CloudAuditLogsSource](samples/cloud-audit-logs-source) example. - -### AwsSqsSource +#### AwsSqsSource The AwsSqsSource fires a new event each time an event is published on an [AWS SQS topic](https://aws.amazon.com/sqs/). -**Spec fields**: - -- `queueURL`: URL of the SQS queue to pull events from. -- `awsCredsSecret`: credential to use to poll the AWS SQS queue. -- `sink`: - [ObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#objectreference-v1-core) - A reference to the object that should receive events. -- `serviceAccountName`: `string` The name of the ServiceAccount used to access - the `awsCredsSecret`. - -### ContainerSource - -The ContainerSource will instantiate a container image which can generate events -until the ContainerSource is deleted. This may be used (for example) to poll an -FTP server for new files or generate events at a set time interval. - -**Spec fields**: - -- `image` (**required**): `string` A docker image of the container to be run. -- `args`: `[]string` Command-line arguments. If no `--sink` flag is provided, - one will be added and filled in with the DNS address of the `sink` object. -- `env`: `map[string]string` Environment variables to be set in the container. -- `serviceAccountName`: `string` The name of the ServiceAccount to run the - container as. -- `sink`: - [ObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#objectreference-v1-core) - A reference to the object that should receive events. - -### CronJobSource - -The CronJobSource fires events based on given -[Cron](https://en.wikipedia.org/wiki/Cron) schedule. - -**Spec fields**: - -- `schedule` (**required**): `string` A - [Cron](https://en.wikipedia.org/wiki/Cron) format string, such as `0 * * * *` - or `@hourly`. -- `data`: `string` Optional data sent to downstream receiver. -- `serviceAccountName`: `string` The name of the ServiceAccount to run the - container as. -- `sink`: - [ObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#objectreference-v1-core) - A reference to the object that should receive events. - -See the [Cronjob Source](samples/cronjob-source) example. - -### KafkaSource +#### KafkaSource The KafkaSource reads events from an Apache Kafka Cluster, and passes these to a Knative Serving application so that they can be consumed. -**Spec fields**: - -- `consumerGroup`: `string` Name of a Kafka consumer group. -- `bootstrapServers`: `string` Comma separated list of `hostname:port` pairs for - the Kafka Broker. -- `topics`: `string` Name of the Kafka topic to consume messages from. -- `net`: Optional network configuration. - - `sasl`: Optional SASL authentication configuration. - - `enable`: `boolean` If true, use SASL for authentication. - - `user.secretKeyRef`: - [`SecretKeySelector`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - containing the SASL username to use. - - `password.secretKeyRef`: - [`SecretKeySelector`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - containing the SASL password to use. - - `tls`: Optional TLS configuration. - - `enable`: `boolean` If true, use TLS when connecting. - - `cert.secretKeyRef`: - [`SecretKeySelector`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - containing the client certificate to use. - - `key.secretKeyRef`: - [`SecretKeySelector`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - containing the client key to use. - - `caCert.secretKeyRef`: - [`SecretKeySelector`](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#secretkeyselector-v1-core) - containing a server CA certificate to use when verifying the server - certificate. - See the [Kafka Source](https://github.com/knative/eventing-contrib/tree/master/kafka/source) -example. +example for more details. -### CamelSource +#### CamelSource A CamelSource is an event source that can represent any existing [Apache Camel component](https://github.com/apache/camel/tree/master/components) @@ -374,34 +221,49 @@ endpoint. Each Camel endpoint has the form of a URI where the scheme is the ID of the component to use. CamelSource requires [Camel-K](https://github.com/apache/camel-k#installation) -to be installed into the current namespace. - -**Spec fields**: - -- source: information on the kind of Camel source that should be created. - - component: the default kind of source, enables creating an EventSource by - configuring a single Camel component. - - uri: `string` contains the Camel URI that should be used to push events - into the target sink. - - properties: `key/value map` contains Camel global options or component - specific configuration. Options are available in the documentation of each - existing Apache Camel component. -- serviceAccountName: `string` an optional service account that can be used to - run the source pod. -- image: `string` an optional base image to use for the source pod, mainly for - development purposes. - -See the +to be installed into the current namespace. See the [CamelSource](https://github.com/knative/eventing-contrib/tree/master/camel/source/samples) example. +### Google Cloud Sources + +In order to consume events from different GCP services, [Knative-GCP](https://github.com/google/knative-gcp) supports +different GCP Sources. + +#### CloudPubSubSource + +The CloudPubSubSource fires a new event each time a message is published on a +[Google Cloud Platform PubSub topic](https://cloud.google.com/pubsub/). + +See the [CloudPubSubSource](samples/cloud-pubsub-source) example for more details. + +#### CloudStorageSource + +Registers for events of specific types on the specified +[Google Cloud Storage](https://cloud.google.com/storage/) bucket and optional object prefix. +Brings those events into Knative. + +See the [CloudStorageSource](samples/cloud-storage-source) example. + +#### CloudSchedulerSource + +Creates, updates, and deletes [Google Cloud Scheduler](https://cloud.google.com/scheduler/) Jobs. +When those jobs are triggered, receive the event inside Knative. + +See the [CloudSchedulerSource](samples/cloud-scheduler-source) example for further details. + +#### CloudAuditLogsSource + +Registers for events of specific types on the specified [Google Cloud Audit Logs](https://cloud.google.com/logging/docs/audit/). +Brings those events into Knative. + +Refer to the [CloudAuditLogsSource](samples/cloud-audit-logs-source) example for more details. + + ## Getting Started -- [Setup Knative Serving](../install/README.md) - [Install the Eventing component](#installation) +- [Setup Knative Serving](../install/README.md) - [Run samples](./samples/) - -## Configuration - - [Default Channels](./channels/default-channels.md) provide a way to choose the persistence strategy for Channels across the cluster. diff --git a/docs/eventing/migration/README.md b/docs/eventing/migration/README.md index 4139ca649..367d671fa 100644 --- a/docs/eventing/migration/README.md +++ b/docs/eventing/migration/README.md @@ -1,3 +1,6 @@ -Knative Eventing in version 0.13 does deprecate a few resources. This document provides a collection of migration examples: +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) migration from `ContainerSource`. +* [SinkBinding](./sinkbinding.md) alternative to `ContainerSource`. diff --git a/docs/eventing/migration/sinkbinding.md b/docs/eventing/migration/sinkbinding.md index 3a6bc57ee..f994d0213 100644 --- a/docs/eventing/migration/sinkbinding.md +++ b/docs/eventing/migration/sinkbinding.md @@ -1,88 +1,101 @@ --- -title: "Migrating from ContainerSource to SinkBinding" +title: "SinkBinding alternative to ContainerSource" weight: 20 type: "docs" aliases: - - /docs/eventing/ping.md + - /docs/eventing/sinkbinding.md --- -The deprecated `ContainerSource` should be converted to a `SinkBinding`. +`ContainerSource` can be seen as the combination of +`SinkBinding`+`Deployment`. In fact, that +is exactly how it's implemented! -The YAML file for a `ContainerSource` that emits events to a Knative Serving service will look similar to this: +In YAML, these two options are equivalent: -```yaml -apiVersion: sources.eventing.knative.dev/v1alpha1 -kind: ContainerSource -metadata: - name: urbanobservatory-event-source -spec: - image: quay.io/openshift-knative/knative-eventing-sources-websocketsource:latest - args: - - '--source=wss://api.usb.urbanobservatory.ac.uk/stream' - - '--eventType=my.custom.event' - sink: - apiVersion: serving.knative.dev/v1 - kind: Service - name: wss-event-display -``` +1. `ContainerSource` that emits events to a `Knative Service`: -The referenced image of the `ContainerSource` needed an "sink" argument, [see](https://knative.dev/docs/eventing/#containersource) for details. + ```yaml + apiVersion: sources.knative.dev/v1alpha2 + 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 + ``` -To migrate this source to a `SinkBinding`, a few steps are required. Instead of using a `ContainerSource`, -you need to create a `SinkBinding`, like: +2. `SinkBinding` + `Deployment`. Something like the following: -```yaml -apiVersion: sources.knative.dev/v1alpha2 -kind: SinkBinding -metadata: - name: bind-wss -spec: - subject: + ```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 - 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`. 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: + name: wss 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' -``` + 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. + 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. -The `image` that is used by the `Deployment` is required to understands the semantics of the `K_SINK` environment variable, holding the endpoint to which to send cloud events. The `K_SINK` environment variable is part of the `SinkBinding`'s runtime contract of the [referenced container image](https://knative.dev/docs/reference/eventing/#sources.knative.dev/v1alpha2.SinkBinding). +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 the above example will give a log like: +Running any of the above examples will give a log similar to: ``` ☁️ cloudevents.Event @@ -96,3 +109,13 @@ Context Attributes, 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`. diff --git a/docs/eventing/samples/container-source/README.md b/docs/eventing/samples/container-source/README.md index e3ae6737b..1999dfde7 100644 --- a/docs/eventing/samples/container-source/README.md +++ b/docs/eventing/samples/container-source/README.md @@ -82,7 +82,7 @@ file. Note that arguments and environment variables are set and will be passed to the container. ```yaml -apiVersion: sources.eventing.knative.dev/v1alpha1 +apiVersion: sources.knative.dev/v1alpha2 kind: ContainerSource metadata: name: test-heartbeats @@ -129,7 +129,7 @@ message sent by the heartbeats source to the display function: ☁️ cloudevents.Event Validation: valid Context Attributes, - specversion: 0.3 + 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 @@ -160,11 +160,9 @@ any tools you like. Here are some basic guidelines: - The container image must have a `main` method to start with. - The `main` method will accept parameters from arguments and environment variables. -- The arguments may include a `sink` if a flag `--sink` is set or a Sink object - is provided in the ContainerSource YAML file. -- The environment variables may include a `SINK` if a `SINK` variable is set in - the `env` or a Sink object is provided in the ContainerSource YAML file. -- The event messages shall be sent to the sink uri. The message can be any +- Two environments variables will be injected by the `ContainerSource` controller, +`K_SINK` and `K_CE_OVERRIDES`, resolved from `spec.sink` and `spec.ceOverrides` respectively. +- The event messages shall be sent to the sink URI specified in `K_SINK`. The message can be any format. [CloudEvents](https://github.com/cloudevents/spec/blob/master/spec.md#design-goals) format is recommended. @@ -175,6 +173,6 @@ event source is a sample for your reference. ### Create the ContainerSource using this container image When the container image is ready, a YAML file will be used to create a concrete -ContainerSource. Use [heartbeats-source.yaml](./heartbeats-source.yaml) as a +`ContainerSource`. Use [heartbeats-source.yaml](./heartbeats-source.yaml) as a sample for reference. [Learn more about the ContainerSource specification](../../../eventing#containersource). diff --git a/docs/eventing/samples/container-source/heartbeats-source.yaml b/docs/eventing/samples/container-source/heartbeats-source.yaml index 7f99df625..1f281f038 100644 --- a/docs/eventing/samples/container-source/heartbeats-source.yaml +++ b/docs/eventing/samples/container-source/heartbeats-source.yaml @@ -1,4 +1,4 @@ -apiVersion: sources.eventing.knative.dev/v1alpha1 +apiVersion: sources.knative.dev/v1alpha2 kind: ContainerSource metadata: name: test-heartbeats diff --git a/docs/eventing/samples/sinkbinding/README.md b/docs/eventing/samples/sinkbinding/README.md index 5df301cca..5788b2a35 100644 --- a/docs/eventing/samples/sinkbinding/README.md +++ b/docs/eventing/samples/sinkbinding/README.md @@ -122,7 +122,6 @@ apiVersion: batch/v1beta1 kind: CronJob metadata: name: heartbeat-cron -spec: spec: # Run every minute schedule: "* * * * *" diff --git a/docs/eventing/sources/README.md b/docs/eventing/sources/README.md index b30d372fd..325d853af 100644 --- a/docs/eventing/sources/README.md +++ b/docs/eventing/sources/README.md @@ -1,7 +1,7 @@ --- title: "Knative Eventing sources" linkTitle: "Eventing sources" -weight: 30 +weight: 20 type: "docs" --- @@ -58,10 +58,10 @@ These are not directly usable, but make writing a Source much easier. Name | Status | Support | Description --- | --- | --- | --- [Auto Container Source](https://github.com/Harwayne/auto-container-source) | Proof of Concept | None | AutoContainerSource is a controller that allows the Source CRDs _without_ needing a controller. It notices CRDs with a specific label and starts controlling resources of that type. It utilizes Container Source as underlying infrastructure. -[Container Source](https://knative.dev/docs/eventing/migration/sinkbinding) | Deprecated, replaced by SinkBinding | Knative | ContainerSource was an earlier version of SinkBinding which controlled the lifetime of a single Pod which acted as an event source. SinkBinding is more flexible and is preferred. +[Container Source](https://knative.dev/docs/eventing/migration/sinkbinding) | Active Development | Knative | Given a `spec.template` with at least a container image specified, ContainerSource will keep a `Pod` running with the specified image(s). `K_SINK` (destination address) and `KE_CE_OVERRIDES` (JSON CloudEvents attributes) environment variables are injected into the running image(s). It is used by multiple other Sources as underlying infrastructure. [Kubebuilder Sample Source](https://github.com/grantr/sample-source) | Proof of Concept | None | Kubebuilder SampleSource is a kubebuilder based implementation supporting the [Writing an Event Source the Hard Way tutorial](../samples/writing-a-source). [Sample Source](https://github.com/knative/sample-source) | Active Development | Knative | Used as reference implementation supporting [Writing an Event Source from Scratch tutorial](../samples/writing-receive-adapter-source). -[SinkBinding](https://knative.dev/docs/eventing/samples/sinkbinding/) | Active Development | Knative | SinkBinding provides a framework for injecting `K_SINK` (destination address) and `K_CE_OVERRIDES` (JSON cloudevents attributes) environment variables into any Kubernetes resource which has a `spec.template` that looks like a Pod (aka PodSpeccable). +[SinkBinding](https://knative.dev/docs/eventing/samples/sinkbinding/) | Active Development | Knative | SinkBinding provides a framework for injecting `K_SINK` (destination address) and `K_CE_OVERRIDES` (JSON cloudevents attributes) environment variables into any Kubernetes resource which has a `spec.template` that looks like a Pod (aka PodSpecable). diff --git a/docs/eventing/sources/sources.yaml b/docs/eventing/sources/sources.yaml index 4bef673ab..922b35932 100644 --- a/docs/eventing/sources/sources.yaml +++ b/docs/eventing/sources/sources.yaml @@ -8,14 +8,16 @@ metaSources: description: > SinkBinding provides a framework for injecting `K_SINK` (destination address) and `K_CE_OVERRIDES` (JSON cloudevents attributes) environment variables into any Kubernetes - resource which has a `spec.template` that looks like a Pod (aka PodSpeccable). + resource which has a `spec.template` that looks like a Pod (aka PodSpecable). - name: Container Source url: https://knative.dev/docs/eventing/migration/sinkbinding - status: Deprecated, replaced by SinkBinding + status: Active Development support: Knative description: > - ContainerSource was an earlier version of SinkBinding which controlled the lifetime of a single - Pod which acted as an event source. SinkBinding is more flexible and is preferred. + Given a `spec.template` with at least a container image specified, ContainerSource will keep a `Pod` + running with the specified image(s). `K_SINK` (destination address) and `KE_CE_OVERRIDES` (JSON + CloudEvents attributes) environment variables are injected into the running image(s). It is used by multiple + other Sources as underlying infrastructure. - name: Auto Container Source url: https://github.com/Harwayne/auto-container-source status: Proof of Concept