This repository contains a Kubernetes Operator for Drasi, built using Kopf. The operator automates the management of Drasi resources and their lifecycle in Kubernetes clusters, enabling declarative data integration and event-driven automation.
Key components:
- Drasi: An open-source data integration and automation platform.
- Dapr: Distributed Application Runtime, used for building microservices and event-driven workflows.
- Drasi Operator: This custom operator manages Drasi resources (queries, sources, reactions, etc.) via Kubernetes CRDs, using Kopf for event handling.
Below is a simplified diagram of how the components interact:
graph TD
subgraph Kubernetes Cluster
A[User applies Drasi CRDs] --> B(Drasi Operator)
B -->|Manages| C[Drasi Resources]
C -->|Triggers| D[Drasi Engine]
D -->|Uses| E[Dapr Sidecar]
end
E -.->|Eventing, Pub/Sub, Bindings| F[External Systems]
Flow:
- Users define Drasi resources (queries, sources, reactions) as Kubernetes CRDs.
- The Drasi Operator (this repo) watches for changes and applies them using Drasi CLI.
- Drasi Engine runs the data integration logic, leveraging Dapr for eventing and communication.
- Dapr connects Drasi to external systems (databases, message brokers, etc.).
# 1. Create a kind cluster
make kind-create
# 2. Install Dapr (eventing/runtime)
make install-dapr
# 3. Build and deploy the Drasi Operator
make install-drasi-operator
# 4. Install Drasi core resources
make install-drasi
# 5. Install Drasi providers (sources, reactions, etc.)
make install-drasi-providers
# 6. Apply a sample to trigger the operator
make apply-sample
# 7. (Optional) Remove the sample
make delete-samplemake cleansrc/— Operator source code (handlers, utils, etc.)k8s/— Kubernetes manifests (CRDs, deployments, Drasi/Dapr setup)samples/— Example Drasi resources to test the operatorMakefile— Automation for build, deploy, and local dev