22
33Kubernetes operator for streaming data between different sources (Kafka, PostgreSQL, Trino) with support for message transformations.
44
5- ## Features
6-
7- - ** Multiple Data Sources** : Kafka, PostgreSQL, Trino
8- - ** Message Transformations** :
9- - Timestamp - add timestamp to messages
10- - Flatten - expand arrays into separate messages
11- - Filter - filter by conditions
12- - Mask - mask sensitive data
13- - Router - route to different sinks
14- - Select - select specific fields
15- - Remove - remove fields
16- - SnakeCase - convert field names to snake_case
17- - CamelCase - convert field names to CamelCase
18- - ** Kubernetes Secrets Support** : Configure connectors using ` SecretRef ` for secure credential management
19- - ** Per-Resource Pod Deployment** : Each DataFlow resource creates a separate pod (Deployment) for processing
20- - ** Resource Management** : Configure CPU and memory resources for processor pods
21- - ** Pod Placement Control** : Configure nodeSelector, affinity, and tolerations for fine-grained pod placement
5+ ** [ Online documentation] ( https://dataflow-operator.github.io/docs/ ) **
226
237## Quick Start
248
@@ -30,71 +14,11 @@ Kubernetes operator for streaming data between different sources (Kafka, Postgre
3014- Go 1.21+ (for local development)
3115- Docker and docker-compose (for local development)
3216
33- ### Installation
34-
35- #### Installing CRD
36-
37- Before installing the operator, you need to install the Custom Resource Definition (CRD):
38-
39- ``` bash
40- kubectl apply -f https://raw.githubusercontent.com/dataflow-operator/dataflow/refs/heads/main/config/crd/bases/dataflow.dataflow.io_dataflows.yaml
41- ```
42-
43- Or use a local file:
44-
45- ``` bash
46- kubectl apply -f config/crd/bases/dataflow.dataflow.io_dataflows.yaml
47- ```
48-
49- #### Installation via Helm (Recommended)
50-
51- 1 . Install the operator from OCI registry:
52- ``` bash
53- helm install dataflow-operator oci://ghcr.io/dataflow-operator/helm-charts/dataflow-operator
54- ```
55-
56- 2 . For installation with custom settings:
57- ``` bash
58- helm install dataflow-operator oci://ghcr.io/dataflow-operator/helm-charts/dataflow-operator \
59- --set image.repository=your-registry/controller \
60- --set image.tag=v1.0.0 \
61- --set replicaCount=2
62- ```
63-
64- 3 . For installation in a specific namespace:
65- ``` bash
66- helm install dataflow-operator oci://ghcr.io/dataflow-operator/helm-charts/dataflow-operator \
67- --namespace dataflow-system \
68- --create-namespace
69- ```
70-
71- 4 . Check installation status:
72- ``` bash
73- kubectl get pods -l app.kubernetes.io/name=dataflow-operator
74- ```
75-
76- ** Note** : For local development, you can also use the local chart:
77- ``` bash
78- helm install dataflow-operator ./helm-charts/dataflow-operator
79- ```
80-
81- #### Updating
82-
83- ``` bash
84- helm upgrade dataflow-operator oci://ghcr.io/dataflow-operator/helm-charts/dataflow-operator
85- ```
86-
87- #### Uninstallation
88-
89- ``` bash
90- helm uninstall dataflow-operator
91- ```
92-
9317#### Local Development
9418
9519For local development, you can run the operator locally:
9620``` bash
97- make run
21+ task run
9822```
9923
10024Or use the script:
@@ -115,93 +39,34 @@ Available UIs:
11539
116402 . Run the operator:
11741``` bash
118- make run
119- ```
120-
121- ### Usage Examples
122-
123- See ` config/samples/ ` for CRD manifest examples.
124-
125- #### Example with Kubernetes Secrets
126-
127- For secure credential storage, use Kubernetes Secrets:
128-
129- ``` bash
130- kubectl apply -f config/samples/kafka-to-postgres-secrets.yaml
131- ```
132-
133- This example demonstrates using ` SecretRef ` for connector configuration. All connectors support configuration from Kubernetes Secrets.
134-
135- ## Project Structure
136-
137- ```
138- dataflow/
139- ├── api/v1/ # CRD definitions
140- ├── internal/
141- │ ├── connectors/ # Connectors for sources/sinks
142- │ ├── transformers/ # Message transformations
143- │ ├── processor/ # Message processor
144- │ └── controller/ # Kubernetes controller
145- ├── config/samples/ # CRD examples
146- ├── docs/ # MkDocs documentation
147- ├── test/ # Tests and utilities
148- └── scripts/ # Helper scripts
149- ```
150-
151- ## Documentation
152-
153- Full documentation is available in ` docs/ ` . To view:
154-
155- ``` bash
156- mkdocs serve
42+ task run
15743```
15844
159- Or from the project root:
160-
161- ``` bash
162- cd docs && mkdocs serve
163- ```
164-
165- Documentation is available in two languages:
166- - ** English** : Default language
167- - ** Russian** : Available in the navigation menu
168-
16945## Development
17046
17147### Code Generation
17248
173- If you encounter issues with ` make generate` , try:
49+ If you encounter issues with ` task generate` , try:
17450
17551``` bash
17652# Update controller-gen
17753go install sigs.k8s.io/controller-tools/cmd/controller-gen@latest
17854
17955# Then
180- make generate
56+ task generate
18157```
18258
18359### Testing
18460
18561``` bash
18662# Unit tests
187- make test
63+ task test
18864
18965# Integration tests (requires kind)
19066./scripts/setup-kind.sh
191- make test-integration
67+ task test-integration
19268```
19369
194- ## Security
195-
196- DataFlow Operator supports configuring connectors from Kubernetes Secrets through ` SecretRef ` fields. This allows:
197-
198- - Secure storage of sensitive data (passwords, tokens, connection strings)
199- - Centralized credential management
200- - Secret rotation without changing DataFlow resources
201- - Access control through Kubernetes RBAC
202-
203- See the [ Connectors documentation] ( docs/en/connectors.md#using-kubernetes-secrets ) for details.
204-
20570## License
20671
20772Apache License 2.0
0 commit comments