Deploy the Data Processing service for NBS 7
This page walks through deploying the Real Time Ingestion (RTI) data processing service.
On this page
Overview
RTI is a microservice that picks up ELR data after it has been ingested and queued in the NBS Interface table. It processes each record and either marks it as successful or delivers it to the NBS queue. Events are handled through Kafka — there is no direct user interaction with RTI. RTI is triggered through the Data Ingestion ELR endpoint and can work alongside the ELR importer batch job or replace it, providing near-real-time ELR processing without requiring a STLT-managed batch job.

Deploy RTI using Helm
This section covers installing the NBS 7 RTI service.
RTI microservice
- Use the
values.yamlfile supplied in thenbs-helm-vX.Y.Z.ziprelease package. Set the ECR repository, ECR image tag, database server endpoints, and ingress host values.- Navigate to the NEDSS-Helm/releases page.
- Scroll down to the Assets listed for the latest or previous releases.
- Download the zip file for the release.
- Find the
values.yamlfile undercharts\data-processing-service.
-
Confirm that a DNS entry for the following host was created and points to the network load balancer in front of your Kubernetes cluster (this must be the ACTIVE NLB provisioned by
nginx-ingressin the base install steps). Make this change in your authoritative DNS service (for example, Route 53). Replaceexample.comwith your domain name invalues.yaml.Data processing service application:
dataprocessingservice.example.com -
Set the image repository and tag:
image: repository: "quay.io/us-cdcgov/cdc-nbs-modernization/data-processing-service" pullPolicy: IfNotPresent tag: <release-version-tag> # for example, v1.0.1 -
Set the auth user. RTI uses a valid NBS user to process data. Set
nbs.authuserto a valid user fromODSE.Auth_User:nbs: authuser: "superuser"To find valid auth users, query the ODSE database:
SELECT * FROM [NBS_ODSE].[dbo].[Auth_user] -
Set the JDBC connection values. The
dbservervalue is the database server endpoint only — do not include the port number. You can ignore theingress,ingressHost, and other unrelated fields.
jdbc: dbserver: "EXAMPLE_DB_ENDPOINT" username: "EXAMPLE_ODSE_DB_USER" password: "EXAMPLE_ODSE_DB_USER_PASSWORD" nbs: authuser: "EXAMPLE_NBS_AUTHUSER" kafka: cluster: "EXAMPLE_MSK_KAFKA_ENDPOINT" dataingestion: uri: "data.EXAMPLE.DOMAIN" keycloak: srte: clientId: "EXAMPLE_SRTE_CLIENT_ID" clientSecret: "EXAMPLE_SRTE_CLIENT_SECRET" -
Install the data processing service:
helm install data-processing-service -f ./data-processing-service/values.yaml data-processing-serviceConfirm the pod is running before continuing:
kubectl get pods - See RTI API testing and integration for API testing guidance.
-
Validate the service:
https://<data.EXAMPLE_DOMAIN>/rti/actuator/info https://<data.EXAMPLE_DOMAIN>/rti/actuator/health