/eventing-ceph

Converts Ceph notifications to Cloud Events for use with Knative Eventing.

Primary LanguageGoApache License 2.0Apache-2.0

Knative Eventing Ceph Source

go.dev reference Go Report Card Releases LICENSE Slack Status

The Knative Eventing Ceph project provides source implementation that registers events for Ceph storage notifications.

For complete documentation about Knative Eventing, see the following repos:

If you are interested in contributing, see CONTRIBUTING.md and DEVELOPMENT.md.

Ceph Source Custom Resource

The Ceph source converts bucket notifications from Ceph format into CloudEvents format, and inject them into Knative. Conversion logic follow the one described for AWS S3 bucket notifications. The Ceph source expects HTTP transport, and requires a port on whitch it is listening as part of its configurations.

Note that the receive adapter doing the conversion does not assume the CloudEvents HTTP binding in the incoming messages.

Deployment

To build and deploy on a kubernetes cluster (after knative is installed) run:

ko apply -f config

Testing

  • Deploy a service for the bucket notification messages coming from Ceph:
kubectl apply -f samples/ceph-source-svc.yaml
  • Deploy the event-display Knative service:
ko apply -f samples/event-display.yaml
  • Deploy the Ceph Source resource:
kubectl apply -f samples/ceph-source.yaml
  • Deploy a test pod that has cURL installed and a JSON file with bucket notifications (names records.json):
kubectl apply -f samples/test-pod.yaml
  • Execute cURL command on the test pod to send the JSON bucket notifications to the ceph-bucket-notifications service:
kubectl exec test -- curl -d "@records.json" -X POST my-ceph-source-svc.default.svc.cluster.local
  • To verify that the events reached the event-display service, call:
kubectl logs -l serving.knative.dev/service=event-display -c display-container --tail=100