PingSource

version

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 Event Display Service.

Creating a namespace

Create a new namespace called pingsource-example by entering the following command:

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 consumer to your cluster, run the following command:

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.

kubectl create -n pingsource-example -f - <<EOF
apiVersion: sources.knative.dev/v1alpha2
kind: PingSource
metadata:
  name: test-ping-source
spec:
  schedule: "*/1 * * * *"
  jsonData: '{"message": "Hello world!"}'
  sink:
    ref:
      apiVersion: v1
      kind: Service
      name: event-display
EOF
kn source ping create test-ping-source \
  --namespace pingsource-example
  --schedule "*/1 * * * *" \
  --data '{"message": "Hello world!"}' \
  --sink http://event-display.svc.cluster.local

Verify

View the logs for the event-display event consumer by entering the following command:

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:

☁️  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:

kubectl delete namespace pingsource-example

Reference Documentation

See the PingSource specification.

Contact

For any inquiries about this source, please reach out on to the Knative users group.