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:
- Knative Eventing for the Knative Eventing spec.
- Knative docs for an overview of Knative and to view user documentation.
If you are interested in contributing, see CONTRIBUTING.md and DEVELOPMENT.md.
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.
To build and deploy on a kubernetes cluster (after knative is installed) run:
ko apply -f config
- 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