From a0f607359b91052a87c1fef191a6075cbb640299 Mon Sep 17 00:00:00 2001 From: Lionel Villard Date: Tue, 28 Jul 2020 11:12:59 -0400 Subject: [PATCH] revamp eventing sources page (#2680) * WIP: revamp eventing sources page * various improvements * fix links * make sources a branch bundle and don't use readfile to include pingsource * fix links * changes after review --- docs/eventing/sources/README.md | 103 +++------ docs/eventing/sources/{index.md => _index.md} | 0 .../sources/generator/ReadmeTemplate.gomd | 69 ------ docs/eventing/sources/generator/main.go | 111 --------- docs/eventing/sources/pingsource.md | 155 +++++++++++++ docs/eventing/sources/sources.yaml | 213 ------------------ 6 files changed, 185 insertions(+), 466 deletions(-) rename docs/eventing/sources/{index.md => _index.md} (100%) delete mode 100644 docs/eventing/sources/generator/ReadmeTemplate.gomd delete mode 100644 docs/eventing/sources/generator/main.go create mode 100644 docs/eventing/sources/pingsource.md delete mode 100644 docs/eventing/sources/sources.yaml diff --git a/docs/eventing/sources/README.md b/docs/eventing/sources/README.md index 1c4c0f667..3b45a6a8d 100644 --- a/docs/eventing/sources/README.md +++ b/docs/eventing/sources/README.md @@ -1,86 +1,43 @@ - +## Knative Sources -Event Sources are Kubernetes Custom Resources which provide a mechanism for registering interest in -a class of events from a particular software system. Since different event sources may be described -by different Custom Resources, this page provides an index of the available source resource types as -well as links to installation instructions. +| Name | API Version | Maintainer | Description | +| -- | -- | -- | -- | +| [APIServerSource](https://github.com/knative/eventing/blob/master/pkg/apis/sources/v1alpha1/apiserver_types.go) | v1alpha2 | Knative | Brings Kubernetes API server events into Knative. | +| [AWS SQS](https://github.com/knative/eventing-contrib/blob/master/awssqs/pkg/apis/sources/v1alpha1/aws_sqs_types.go) | v1alpha1 | Knative | Brings [AWS Simple Queue Service](https://aws.amazon.com/sqs/) messages into Knative. | +| [Apache Camel](https://github.com/knative/eventing-contrib/blob/master/camel/source/pkg/apis/sources/v1alpha1/camelsource_types.go) | v1alpha1 | Knative | Allows to use [Apache Camel](https://github.com/apache/camel) components for pushing events into Knative. | +| [Apache CouchDB](https://github.com/knative/eventing-contrib/blob/master/couchdb) | v1alpha1 | Knative | Brings [Apache CouchDB](https://couchdb.apache.org/) messages into Knative. | +| [Apache Kafka](https://github.com/knative/eventing-contrib/blob/master/kafka/source/pkg/apis/sources/v1alpha1/kafka_types.go) | v1beta1 | Knative | Brings [Apache Kafka](https://kafka.apache.org/) messages into Knative. | +| [Container Source](https://github.com/knative/eventing/blob/master/pkg/apis/sources/v1beta1/container_types.go) | v1beta1 | 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. | +| [GitHub](https://github.com/knative/eventing-contrib/blob/master/github/pkg/apis/sources/v1alpha1/githubsource_types.go) | v1alpha1 | Knative | Registers for events of the specified types on the specified GitHub organization/repository. Brings those events into Knative. | +| [GitLab](https://github.com/knative/eventing-contrib/blob/master/gitlab/pkg/apis/sources/v1alpha1/gitlabsource_types.go) | v1alpha1 | Knative | Registers for events of the specified types on the specified GitLab repository. Brings those events into Knative. | +| [Heartbeats](https://github.com/knative/eventing-contrib/tree/master/cmd/heartbeats) | N/A | Knative | Uses an in-memory timer to produce events at the specified interval. | +| [PingSource](./pingsource.md) | v1alpha2 | Knative | Produces events with a fixed payload on a specified cron schedule. | +| [SinkBinding](https://knative.dev/docs/eventing/samples/sinkbinding/) | v1alpha2 | 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). | +| [WebSocket](https://github.com/knative/eventing-contrib/tree/master/cmd/websocketsource) | N/A | Knative | Opens a WebSocket to the specified source and packages each received message as a Knative event. | -This is a non-exhaustive list of Event sources for Knative. +## Third-Party Sources - -### Inclusion in this list is not an endorsement, nor does it imply any level of support. - - -## Sources - -These are sources that are installed as `CRD`s. - -Name | Status | Support | Description ---- | --- | --- | --- -[AWS SQS](https://github.com/knative/eventing-contrib/blob/master/awssqs/pkg/apis/sources/v1alpha1/aws_sqs_types.go) | Proof of Concept | None | Brings [AWS Simple Queue Service](https://aws.amazon.com/sqs/) messages into Knative. -[Apache Camel](https://github.com/knative/eventing-contrib/blob/master/camel/source/pkg/apis/sources/v1alpha1/camelsource_types.go) | Proof of Concept | None | Allows to use [Apache Camel](https://github.com/apache/camel) components for pushing events into Knative. -[Apache CouchDB](https://github.com/knative/eventing-contrib/tree/{{< branch >}}/couchdb) | Active Development | None | Brings [Apache CouchDB](https://couchdb.apache.org/) messages into Knative. -[Apache Kafka](https://github.com/knative/eventing-contrib/blob/master/kafka/source/pkg/apis/sources/v1alpha1/kafka_types.go) | Proof of Concept | None | Brings [Apache Kafka](https://kafka.apache.org/) messages into Knative. +| Name | API Version | Maintainer | 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. +[AWS CodeCommit](https://github.com/triggermesh/aws-event-sources/blob/master/cmd/awscodecommitsource/README.md) | Supported | TriggerMesh | Registers for events of the specified types on the specified AWS CodeCommit repository. Brings those events into Knative. +[AWS Cognito](https://github.com/triggermesh/aws-event-sources/tree/master/cmd/awscognitoidentitysource/README.md) | Supported | TriggerMesh | Registers for AWS Cognito events. Brings those events into Knative. +[AWS DynamoDB](https://github.com/triggermesh/aws-event-sources/blob/master/cmd/awsdynamodbsource/README.md) | Supported | TriggerMesh | Registers for events of on the specified AWS DynamoDB table. Brings those events into Knative. +[AWS Kinesis](https://github.com/triggermesh/aws-event-sources/tree/master/cmd/awskinesissource/README.md) | Supported | TriggerMesh | Registers for events on the specified AWS Kinesis stream. Brings those events into Knative. +[AWS SNS](https://github.com/triggermesh/aws-event-sources/tree/master/cmd/awssnssource) | Supported | TriggerMesh | Registers for events of the specified AWS SNS endpoint. Brings those events into Knative. +[AWS SQS](https://github.com/triggermesh/aws-event-sources/tree/master/cmd/awssqssource/README.md) | Supported | TriggerMesh | Registers for events of the specified AWS SQS queue. Brings those events into Knative. [BitBucket](https://github.com/nachocano/bitbucket-source) | Proof of Concept | None | Registers for events of the specified types on the specified BitBucket organization/repository. Brings those events into Knative. [CloudAuditLogsSource](https://github.com/google/knative-gcp/blob/master/docs/examples/cloudauditlogssource/README.md) | Active Development | None | 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. [CloudPubSubSource](https://github.com/google/knative-gcp/blob/master/docs/examples/cloudpubsubsource/README.md) | Active Development | None | Brings [Cloud Pub/Sub](https://cloud.google.com/pubsub/) messages into Knative. [CloudSchedulerSource](https://github.com/google/knative-gcp/blob/master/docs/examples/cloudschedulersource/README.md) | 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. [CloudStorageSource](https://github.com/google/knative-gcp/blob/master/docs/examples/cloudstoragesource/README.md) | Active Development | None | 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. -[Cron Job](https://knative.dev/docs/eventing/migration/ping) | Replaced by PingSource | None | Deprecated, replace with [PingSource](https://knative.dev/docs/eventing/migration/ping) or a [CronJob using SinkBinding](https://knative.dev/docs/eventing/samples/sinkbinding/) -[GitHub](https://github.com/knative/eventing-contrib/blob/master/github/pkg/apis/sources/v1alpha1/githubsource_types.go) | Proof of Concept | None | Registers for events of the specified types on the specified GitHub organization/repository. Brings those events into Knative. -[GitLab](https://github.com/knative/eventing-contrib/blob/master/gitlab/pkg/apis/sources/v1alpha1/gitlabsource_types.go) | Proof of Concept | None | Registers for events of the specified types on the specified GitLab repository. Brings those events into Knative. -[Kubernetes](https://github.com/knative/eventing/blob/master/pkg/apis/sources/v1alpha1/apiserver_types.go) | Active Development | Knative | Brings Kubernetes API server events into Knative. -[Ping](https://github.com/knative/eventing/blob/master/pkg/apis/sources/v1alpha2/ping_types.go) | In development | None | Uses an in-memory timer to produce events with a fixed payload on a specified cron schedule. -[VMware](https://github.com/vmware-tanzu/sources-for-knative/tree/{{< branch >}}/pkg/apis/source/v1alpha1/vspheresource_types.go) | Active Development | None | Brings [vSphere](https://www.vmware.com/products/vsphere.html) events into Knative. - - - -## Meta Sources - -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) | 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. -[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 PodSpecable). - - - -### ContainerSource Containers - -These are containers intended to be used with `ContainerSource`. See the docs [here](../samples/container-source/README.md). - -Name | Status | Support | Description ---- | --- | --- | --- -[AWS CodeCommit](https://github.com/triggermesh/aws-event-sources/blob/master/cmd/awscodecommitsource/README.md) | Supported | TriggerMesh | Registers for events of the specified types on the specified AWS CodeCommit repository. Brings those events into Knative. -[AWS Cognito](https://github.com/triggermesh/aws-event-sources/blob/master/cmd/awscognitosource/README.md) | Supported | TriggerMesh | Registers for AWS Cognito events. Brings those events into Knative. -[AWS DynamoDB](https://github.com/triggermesh/aws-event-sources/blob/master/cmd/awsdynamodbsource/README.md) | Supported | TriggerMesh | Registers for events of on the specified AWS DynamoDB table. Brings those events into Knative. -[AWS Kinesis](https://github.com/triggermesh/aws-event-sources/tree/master/cmd/awskinesissource/README.md) | Supported | TriggerMesh | Registers for events on the specified AWS Kinesis stream. Brings those events into Knative. -[AWS SNS](https://github.com/triggermesh/aws-event-sources/tree/master/cmd/awssnssource) | Supported | TriggerMesh | Registers for events of the specified AWS SNS endpoint. Brings those events into Knative. -[AWS SQS](https://github.com/triggermesh/aws-event-sources/tree/master/cmd/awssqssource/README.md) | Supported | TriggerMesh | Registers for events of the specified AWS SQS queue. Brings those events into Knative. [FTP / SFTP](https://github.com/vaikas-google/ftp) | Proof of concept | None | Watches for files being uploaded into a FTP/SFTP and generates events for those. [Heartbeat](https://github.com/Harwayne/auto-container-source/tree/master/heartbeat-source) | Proof of Concept | None | Uses an in-memory timer to produce events as the specified interval. Uses AutoContainerSource for underlying infrastructure. -[Heartbeats](https://github.com/knative/eventing-contrib/tree/{{< branch >}}/cmd/heartbeats) | Proof of Concept | None | Uses an in-memory timer to produce events at the specified interval. -[K8s](https://github.com/Harwayne/auto-container-source/tree/master/k8s-event-source) | Proof of Concept | None | Brings Kubernetes cluster events into Knative. Uses AutoContainerSource for underlying infrastructure. -[WebSocket](https://github.com/knative/eventing-contrib/tree/{{< branch >}}/cmd/websocketsource) | Active Development | None | Opens a WebSocket to the specified source and packages each received message as a Knative event. - - -### SinkBindings - -These are containers intended to be used with `SinkBinding`. See the docs [here](../samples/sinkbinding/README.md). - -Name | Status | Support | Description ---- | --- | --- | --- [Konnek](https://konnek.github.io/docs/#/) | Active Development | None | Retrieves events from cloud platforms (like AWS and GCP) and transforms them into CloudEvents for consumption in Knative. +[K8s](https://github.com/Harwayne/auto-container-source/tree/master/k8s-event-source) | Proof of Concept | None | Brings Kubernetes cluster events into Knative. Uses AutoContainerSource for underlying infrastructure. +[VMware](https://github.com/vmware-tanzu/sources-for-knative/blob/master/pkg/apis/sources/v1alpha1/vspheresource_types.go) | Active Development | None | Brings [vSphere](https://www.vmware.com/products/vsphere.html) events into Knative. diff --git a/docs/eventing/sources/index.md b/docs/eventing/sources/_index.md similarity index 100% rename from docs/eventing/sources/index.md rename to docs/eventing/sources/_index.md diff --git a/docs/eventing/sources/generator/ReadmeTemplate.gomd b/docs/eventing/sources/generator/ReadmeTemplate.gomd deleted file mode 100644 index 2f4aca11e..000000000 --- a/docs/eventing/sources/generator/ReadmeTemplate.gomd +++ /dev/null @@ -1,69 +0,0 @@ -{{ "" }} - -{{- /* This will be interpreted given a yamlSources object. */ -}} - -{{- /* Ignore this next paragraph, it is only intended in the generated markdown, not here. */ -}} - - -Event Sources are Kubernetes Custom Resources which provide a mechanism for registering interest in -a class of events from a particular software system. Since different event sources may be described -by different Custom Resources, this page provides an index of the available source resource types as -well as links to installation instructions. - -This is a non-exhaustive list of Event sources for Knative. - - -### Inclusion in this list is not an endorsement, nor does it imply any level of support. - - -## Sources - -These are sources that are installed as `CRD`s. - -Name | Status | Support | Description ---- | --- | --- | --- -{{ range .Sources -}} -[{{ .Name }}]({{ .Url }}) | {{ .Status }} | {{ .Support }} | {{ .Description }} -{{- end }} - - -## Meta Sources - -These are not directly usable, but make writing a Source much easier. - -Name | Status | Support | Description ---- | --- | --- | --- -{{ range .MetaSources -}} -[{{ .Name }}]({{ .Url }}) | {{ .Status }} | {{ .Support }} | {{ .Description }} -{{- end }} - - -### ContainerSource Containers - -These are containers intended to be used with `ContainerSource`. See the docs [here](../samples/container-source/README.md). - -Name | Status | Support | Description ---- | --- | --- | --- -{{ range .Containers -}} -[{{ .Name }}]({{ .Url }}) | {{ .Status }} | {{ .Support }} | {{ .Description }} -{{- end }} - -### SinkBindings - -These are containers intended to be used with `SinkBinding`. See the docs [here](../samples/sinkbinding/README.md). - -Name | Status | Support | Description ---- | --- | --- | --- -{{ range .SinkBindings -}} -[{{ .Name }}]({{ .Url }}) | {{ .Status }} | {{ .Support }} | {{ .Description }} -{{- end }} diff --git a/docs/eventing/sources/generator/main.go b/docs/eventing/sources/generator/main.go deleted file mode 100644 index 00619aad5..000000000 --- a/docs/eventing/sources/generator/main.go +++ /dev/null @@ -1,111 +0,0 @@ -/* -Copyright 2019 The Knative Authors - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package main - -import ( - "flag" - "io/ioutil" - "log" - "os" - "sort" - "text/template" - - yaml "gopkg.in/yaml.v2" -) - -var ( - yamlFile = flag.String("yaml", "docs/eventing/sources/sources.yaml", "The YAML file to parse to generate the mark down.") - templateFile = flag.String("template", "docs/eventing/sources/generator/ReadmeTemplate.gomd", "The template file to fill in.") - mdFile = flag.String("md", "docs/eventing/sources/README.md", "The mark down file to write to. Any existing file will be overwritten.") -) - -func main() { - flag.Parse() - - yamlSources := parseYaml() - tmpl := createTemplate() - writeMarkdown(yamlSources, tmpl) -} - -func parseYaml() *yamlSources { - fileBytes, err := ioutil.ReadFile(*yamlFile) - if err != nil { - log.Fatalf("Unable to read the YAML file '%s': %v", *yamlFile, err) - } - - sources := &yamlSources{} - err = yaml.UnmarshalStrict(fileBytes, sources) - if err != nil { - log.Fatalf("Unable to unmarshal the YAML file '%s': %v", *yamlFile, err) - } - - // Sort the three lists. - sortAlphabetically(sources.MetaSources) - sortAlphabetically(sources.Sources) - sortAlphabetically(sources.Containers) - sortAlphabetically(sources.SinkBindings) - - return sources -} - -func sortAlphabetically(slice []source) { - sortByName := func(i, j int) bool { - return slice[i].Name < slice[j].Name - } - sort.SliceStable(slice, sortByName) -} - -type yamlSources struct { - MetaSources []source `yaml:"metaSources"` - Sources []source `yaml:"sources"` - Containers []source `yaml:"containers"` - SinkBindings []source `yaml:"sinkBindings"` -} - -type source struct { - Name string `yaml:"name"` - Url string `yaml:"url"` - Status string `yaml:"status"` // TODO Make this an enum. - Support string `yaml:"support"` - Description string `yaml:"description"` -} - -func createTemplate() *template.Template { - fileBytes, err := ioutil.ReadFile(*templateFile) - if err != nil { - log.Fatalf("Unable to read the template file '%s': %v", *templateFile, err) - } - fileString := string(fileBytes) - tmpl, err := template.New("markdown template").Parse(fileString) - if err != nil { - log.Fatalf("Unable to parse the template file '%s': %v", *templateFile, err) - } - return tmpl -} - -func writeMarkdown(yamlSources *yamlSources, tmpl *template.Template) { - md, err := os.Create(*mdFile) - if err != nil { - log.Fatalf("Unable to create the markdown file '%s': %v", *mdFile, err) - } - defer md.Close() - - err = tmpl.Execute(md, yamlSources) - if err != nil { - log.Fatalf("Unable to execute the template: %v", err) - } -} diff --git a/docs/eventing/sources/pingsource.md b/docs/eventing/sources/pingsource.md new file mode 100644 index 000000000..e92ec86a4 --- /dev/null +++ b/docs/eventing/sources/pingsource.md @@ -0,0 +1,155 @@ +--- +title: "PingSource" +linkTitle: "PingSource" +weight: 31 +type: "docs" +--- + +![version](https://img.shields.io/badge/API_Version-v1alpha2-red?style=flat-square) + +A PingSource produces events with a fixed payload on a specified cron schedule. + +## Installation + +The PingSource source type is enabled by default when you install Knative Eventing. + +## Example + +This example shows how to send an event every second to a Knative Service. + +### Creating a namespace + +Create a new namespace called `pingsource-example` by entering the following +command: + +```shell +kubectl create namespace pingsource-example +``` + +### Creating the event display service + +In this step, you create one event consumer, `event-display` to verify that +`PingSource` is properly working. + +To deploy the `event-display` con sumer to your cluster, run the following +command: + +```shell +kubectl -n pingsource-example apply -f - << EOF +apiVersion: apps/v1 +kind: Deployment +metadata: + name: event-display +spec: + replicas: 1 + selector: + matchLabels: &labels + app: event-display + template: + metadata: + labels: *labels + spec: + containers: + - name: event-display + image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display + +--- + +kind: Service +apiVersion: v1 +metadata: + name: event-display +spec: + selector: + app: event-display + ports: + - protocol: TCP + port: 80 + targetPort: 8080 +EOF +``` + +### Creating the PingSource + +You can now create the `PingSource` sending an event containing +`{"message": "Hello world!"}` every second. + +{{< tabs name="create-source" default="YAML" >}} +{{% tab name="YAML" %}} + +```shell +kubectl create -n pingsource-example -f - <}} + +{{% tab name="kn" %}} + +```shell +kn source ping create test-ping-source \ + --namespace pingsource-example + --schedule "*/1 * * * *" \ + --data '{"message": "Hello world!"}' \ + --sink http://event-display.svc.cluster.local +``` + +{{< /tab >}} +{{< /tabs >}} + +### Verify + +View the logs for the `event-display` event consumer by +entering the following command: + +```shell +kubectl -n pingsource-example logs -l app=event-display --tail=100 +``` + +This returns the `Attributes` and `Data` of the events that the PingSource sent to the `event-display` Service: + +```shell +☁️ cloudevents.Event +Validation: valid +Context Attributes, + specversion: 1.0 + type: dev.knative.sources.ping + source: /apis/v1/namespaces/default/pingsources/test-ping-source + id: d8e761eb-30c7-49a3-a421-cd5895239f2d + time: 2019-12-04T14:24:00.000702251Z + datacontenttype: application/json +Data, + { + "message": "Hello world!" + } +``` + +### Cleanup + +Delete the `pingsource-example` namespace and all of its resources from your +cluster by entering the following command: + +```shell +kubectl delete namespace pingsource-example +``` + +## Reference Documentation + +See the [PingSource specification](../../reference/eventing/eventing.md#sources.knative.dev/v1alpha2.PingSource). + +## Contact + +For any inquiries about this source, please reach out on to the +[Knative users group](https://groups.google.com/forum/#!forum/knative-users). diff --git a/docs/eventing/sources/sources.yaml b/docs/eventing/sources/sources.yaml deleted file mode 100644 index 0a20cb8d1..000000000 --- a/docs/eventing/sources/sources.yaml +++ /dev/null @@ -1,213 +0,0 @@ -# MetaSources are not intended to be used directly by a user. Rather they are to help make other -# sources easy to write and maintain. -metaSources: - - name: SinkBinding - url: https://knative.dev/docs/eventing/samples/sinkbinding/ - status: Active Development - support: Knative - 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 PodSpecable). - - name: Container Source - url: https://knative.dev/docs/eventing/migration/sinkbinding - status: Active Development - support: Knative - description: > - 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 - support: None - description: > - 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. - - name: Sample Source - url: https://github.com/knative/sample-source - status: Active Development - support: Knative - description: > - Used as reference implementation supporting - [Writing an Event Source from Scratch tutorial](../samples/writing-receive-adapter-source). - - -# Sources are event sources that users can install and use directly. -sources: - - name: Apache Camel - url: https://github.com/knative/eventing-contrib/blob/master/camel/source/pkg/apis/sources/v1alpha1/camelsource_types.go - status: Proof of Concept - support: None - description: > - Allows to use [Apache Camel](https://github.com/apache/camel) components for pushing events into Knative. - - name: AWS SQS - url: https://github.com/knative/eventing-contrib/blob/master/awssqs/pkg/apis/sources/v1alpha1/aws_sqs_types.go - status: Proof of Concept - support: None - description: > - Brings [AWS Simple Queue Service](https://aws.amazon.com/sqs/) messages into Knative. - - name: Cron Job - url: https://knative.dev/docs/eventing/migration/ping - status: Replaced by PingSource - support: None - description: > - Deprecated, replace with [PingSource](https://knative.dev/docs/eventing/migration/ping) or a [CronJob using SinkBinding](https://knative.dev/docs/eventing/samples/sinkbinding/) - - name: Ping - url: https://github.com/knative/eventing/blob/master/pkg/apis/sources/v1alpha2/ping_types.go - status: In development - support: None - description: > - Uses an in-memory timer to produce events with a fixed payload on a specified cron schedule. - - name: CloudPubSubSource - url: https://github.com/google/knative-gcp/blob/master/docs/examples/cloudpubsubsource/README.md - status: Active Development - support: None - description: > - Brings [Cloud Pub/Sub](https://cloud.google.com/pubsub/) messages into Knative. - - name: CloudSchedulerSource - url: https://github.com/google/knative-gcp/blob/master/docs/examples/cloudschedulersource/README.md - status: Active Development - support: None - description: > - Create, update, and delete [Google Cloud Scheduler](https://cloud.google.com/scheduler/) Jobs. When those jobs are triggered, receive the event inside Knative. - - name: CloudStorageSource - url: https://github.com/google/knative-gcp/blob/master/docs/examples/cloudstoragesource/README.md - status: Active Development - support: None - description: > - 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. - - name: CloudAuditLogsSource - url: https://github.com/google/knative-gcp/blob/master/docs/examples/cloudauditlogssource/README.md - status: Active Development - support: None - description: > - 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. - - name: GitHub - url: https://github.com/knative/eventing-contrib/blob/master/github/pkg/apis/sources/v1alpha1/githubsource_types.go - status: Proof of Concept - support: None - description: > - Registers for events of the specified types on the specified GitHub organization/repository. - Brings those events into Knative. - - name: GitLab - url: https://github.com/knative/eventing-contrib/blob/master/gitlab/pkg/apis/sources/v1alpha1/gitlabsource_types.go - status: Proof of Concept - support: None - description: > - Registers for events of the specified types on the specified GitLab repository. Brings those - events into Knative. - - name: BitBucket - url: https://github.com/nachocano/bitbucket-source - status: Proof of Concept - support: None - description: > - Registers for events of the specified types on the specified BitBucket organization/repository. - Brings those events into Knative. - - name: Kubernetes - url: https://github.com/knative/eventing/blob/master/pkg/apis/sources/v1alpha1/apiserver_types.go - status: Active Development - support: Knative - description: > - Brings Kubernetes API server events into Knative. - - name: Apache Kafka - url: https://github.com/knative/eventing-contrib/blob/master/kafka/source/pkg/apis/sources/v1alpha1/kafka_types.go - status: Proof of Concept - support: None - description: > - Brings [Apache Kafka](https://kafka.apache.org/) messages into Knative. - - name: Apache CouchDB - url: https://github.com/knative/eventing-contrib/tree/{{< branch >}}/couchdb - status: Active Development - support: None - description: > - Brings [Apache CouchDB](https://couchdb.apache.org/) messages into Knative. - - name: VMware - url: https://github.com/vmware-tanzu/sources-for-knative/tree/{{< branch >}}/pkg/apis/source/v1alpha1/vspheresource_types.go - status: Active Development - support: None - description: > - Brings [vSphere](https://www.vmware.com/products/vsphere.html) events into Knative. - -# These are containers intended to be used with ContainerSource, but are not CRDs. -containers: - - name: Heartbeats - url: https://github.com/knative/eventing-contrib/tree/{{< branch >}}/cmd/heartbeats - status: Proof of Concept - support: None - description: > - Uses an in-memory timer to produce events at the specified interval. - - name: WebSocket - url: https://github.com/knative/eventing-contrib/tree/{{< branch >}}/cmd/websocketsource - status: Active Development - support: None - description: > - Opens a WebSocket to the specified source and packages each received message as a Knative - event. - - name: K8s - url: https://github.com/Harwayne/auto-container-source/tree/master/k8s-event-source - status: Proof of Concept - support: None - description: > - Brings Kubernetes cluster events into Knative. Uses AutoContainerSource for underlying - infrastructure. - - name: Heartbeat - url: https://github.com/Harwayne/auto-container-source/tree/master/heartbeat-source - status: Proof of Concept - support: None - description: > - Uses an in-memory timer to produce events as the specified interval. Uses AutoContainerSource - for underlying infrastructure. - - name: AWS CodeCommit - url: https://github.com/triggermesh/aws-event-sources/blob/master/cmd/awscodecommitsource/README.md - status: Supported - support: TriggerMesh - description: > - Registers for events of the specified types on the specified AWS CodeCommit repository. Brings those events into Knative. - - name: AWS Cognito - url: https://github.com/triggermesh/aws-event-sources/blob/master/cmd/awscognitosource/README.md - status: Supported - support: TriggerMesh - description: > - Registers for AWS Cognito events. Brings those events into Knative. - - name: AWS DynamoDB - url: https://github.com/triggermesh/aws-event-sources/blob/master/cmd/awsdynamodbsource/README.md - status: Supported - support: TriggerMesh - description: > - Registers for events of on the specified AWS DynamoDB table. Brings those events into Knative. - - name: AWS Kinesis - url: https://github.com/triggermesh/aws-event-sources/tree/master/cmd/awskinesissource/README.md - status: Supported - support: TriggerMesh - description: > - Registers for events on the specified AWS Kinesis stream. Brings those events into Knative. - - name: AWS SQS - url: https://github.com/triggermesh/aws-event-sources/tree/master/cmd/awssqssource/README.md - status: Supported - support: TriggerMesh - description: > - Registers for events of the specified AWS SQS queue. Brings those events into Knative. - - name: AWS SNS - url: https://github.com/triggermesh/aws-event-sources/tree/master/cmd/awssnssource - status: Supported - support: TriggerMesh - description: > - Registers for events of the specified AWS SNS endpoint. Brings those events into Knative. - - name: FTP / SFTP - url: https://github.com/vaikas-google/ftp - status: Proof of concept - support: None - description: > - Watches for files being uploaded into a FTP/SFTP and generates events for those. - -# These are intended to be used with SinkBinding, but are not CRDs. -sinkBindings: - - name: Konnek - url: https://konnek.github.io/docs/#/ - status: Active Development - support: None - description: > - Retrieves events from cloud platforms (like AWS and GCP) and transforms them into CloudEvents for consumption in Knative.