Create container image for the Kafka ingestion service and integrate it into the quay.io publishing pipeline. This service consumes workflow lifecycle events from Kafka (CloudEvents format) and persists them to PostgreSQL via JDBC batch UPSERT.
Supports:
- MODE 3: Kafka + CloudEvents + Ingestion Service (Kafka topics → batch consumer → JDBC UPSERT → PostgreSQL normalized tables)
Acceptance Criteria
Build Configuration
Module Path: data-index/data-index-ingestion/data-index-ingestion-kafka-service
Maven Build (JAR only):
mvn clean package -DskipTests
Docker Build:
cd data-index/data-index-ingestion/data-index-ingestion-kafka-service
docker build -f src/main/docker/Dockerfile.jvm \
-t quay.io/kubesmarts/logic-data-index-ingestion-kafka:latest \
.
Image Base: Quarkus JVM mode
Target Image Size: < 400MB
Required Runtime Configuration:
- Kafka bootstrap servers (via env vars)
- Kafka topic name (CloudEvents input:
flow-lifecycle-out)
- PostgreSQL connection string
- Dead-letter queue topic (for failed events:
data-index-events-dlq)
- Batch size configuration (default: 1000 Kafka records, 1000 DB records)
Testing
Deploy MODE 3 stack to KIND cluster and verify:
# Deploy Kafka, PostgreSQL, ingestion service
kubectl apply -f data-index/deploy/mode3/
# Deploy workflow test app configured for Kafka output
kubectl apply -f data-index/deploy/mode3/workflow-test-app.yaml
# Trigger workflow execution
curl -X POST http://workflow-test-app/... -d '{"test":"data"}'
# Verify events consumed and persisted
kubectl logs -l app=data-index-ingestion-kafka | grep "Processed event"
psql -c "SELECT * FROM workflow_instances;"
Dependencies
Depends on #67
Create container image for the Kafka ingestion service and integrate it into the quay.io publishing pipeline. This service consumes workflow lifecycle events from Kafka (CloudEvents format) and persists them to PostgreSQL via JDBC batch UPSERT.
Supports:
Acceptance Criteria
data-index/data-index-ingestion/data-index-ingestion-kafka-service/src/main/docker/Dockerfile.jvmpom.xml(if present)docker build:data-index/scripts/e2e/full-test-mode3.shdocker build -f src/main/docker/Dockerfile.jvm -t <image> .quay.io/kubesmarts/logic-data-index-ingestion-kafka:${VERSION}Build Configuration
Module Path:
data-index/data-index-ingestion/data-index-ingestion-kafka-serviceMaven Build (JAR only):
Docker Build:
Image Base: Quarkus JVM mode
Target Image Size: < 400MB
Required Runtime Configuration:
flow-lifecycle-out)data-index-events-dlq)Testing
Deploy MODE 3 stack to KIND cluster and verify:
Dependencies
Depends on #67