Databricks on AWS Processing Deployment
- Self-hosted
This guide explains how to run Qualytics data processing as a continuous job in Databricks on AWS while the application remains in your self-hosted Kubernetes environment.
The approved Databricks bundle is release-specific. Use the bundle and image tag provided for your Qualytics release instead of copying configuration from another deployment.
Other Databricks clouds
This guide covers Databricks on AWS. Contact your Qualytics account manager for Azure Databricks or Databricks on Google Cloud.
Architecture
flowchart LR
Users["Users and API clients"] --> App["Self-hosted Qualytics application"]
IdP["Identity provider"] --> App
Job["Databricks on AWS processing job"] -->|"Outbound private TLS on port 5671"| Endpoint["Private processing endpoint"]
Endpoint --> App
Job --> Data["Customer datastores"]
The Databricks job initiates the connection to a secure endpoint in the self-hosted environment. Customer data processing remains in Databricks.
Prerequisites
Before starting, ensure you have:
- A self-hosted Qualytics deployment with its required deployment identifier
- A Databricks on AWS workspace with permission to create and run jobs
- The Databricks CLI installed
- A version-matched Databricks bundle and Qualytics image tag
- Qualytics image registry credentials
- A private endpoint that Databricks can reach on TCP port
5671 - Customer-managed private load-balancing and DNS for that endpoint
- A TLS certificate for that endpoint that Databricks trusts
Step 1: Prepare the Self-Hosted Application
Work with your Qualytics account manager to prepare a restricted Helm values override for the approved chart version. The override must:
- Select Databricks as the processing environment
- Disable the in-cluster processing job
- Enable the TLS-protected service endpoint for Databricks
- Enable the chart's TLS-protected inbound service
Create the required TLS Secret named rabbitmq-tls in the Qualytics namespace:
kubectl create secret tls rabbitmq-tls \
--namespace qualytics \
--cert=fullchain.pem \
--key=privkey.pem
Apply the override with your existing protected values file:
CHART_VERSION="<version provided by Qualytics>"
helm upgrade --install qualytics qualytics/qualytics \
--namespace qualytics \
--create-namespace \
--version "$CHART_VERSION" \
-f values.yaml \
-f databricks.values.yaml \
--wait \
--timeout=20m
The chart exposes the secure service through Kubernetes NodePort 30671. It does not create the private load balancer or DNS name needed by Databricks. Provision a private TCP endpoint that listens on port 5671 and forwards to NodePort 30671 on the cluster nodes.
Confirm that the Databricks workspace can reach that private endpoint and that its DNS name matches the TLS certificate. Do not expose the endpoint to the public internet.
Step 2: Collect the Connection Values
Record the following values through your organization's approved secret-sharing process:
| Value | Source |
|---|---|
| Service endpoint | Private DNS name configured by your infrastructure team; clients connect on port 5671 |
| Service username | user |
| Service password | Protected application deployment configuration |
| Image registry username | Provided by Qualytics |
| Image registry token | Provided by Qualytics |
The service password, registry token, deployment identifier, and platform license are separate values. Do not reuse one in place of another.
Step 3: Install and Authenticate the Databricks CLI
Follow the Databricks instructions to install or update the CLI.
Authenticate to the target workspace:
Step 4: Store the Required Secrets
Create the secret scope named in the approved bundle:
The bundle defines the required secret keys. Add the service password and registry credentials using those exact key names:
databricks secrets put-secret <scope-name> <service-password-key>
databricks secrets put-secret <scope-name> <registry-username-key>
databricks secrets put-secret <scope-name> <registry-token-key>
The CLI prompts for each value securely. Confirm that the keys exist without displaying their contents:
Step 5: Configure the Approved Bundle
Update only the customer-specific inputs documented with the bundle:
| Input | Value |
|---|---|
| Workspace host | Your Databricks workspace URL |
| Service endpoint | The private service endpoint from Step 2 |
| Service username | user |
| Secret scope | The scope created in Step 4 |
| Qualytics image | The image and release tag provided by Qualytics |
| Worker type and range | The sizing approved for your workload |
Do not copy internal job settings from another release. They can change with the Qualytics image and Databricks runtime.
Step 6: Deploy and Start the Processing Job
From the approved bundle directory, deploy the target:
Start the continuous processing job using the job key included with the bundle:
Verify the Deployment
- Confirm that the Databricks job remains running.
- Review the job output for a successful connection to the self-hosted service endpoint.
- Start a Qualytics operation and confirm that the Databricks job processes it.
- Confirm that the Kubernetes processing job is not running at the same time.
Troubleshooting
| Issue | What to check |
|---|---|
| TLS connection fails | Confirm the private route, the port 5671 to NodePort 30671 mapping, endpoint certificate, and Databricks trust chain. |
| Secret cannot be resolved | Run databricks secrets list-secrets <scope-name> and compare the key names with the approved bundle. |
| Image pull fails | Confirm the registry username, token, image name, and release tag. |
| Two processing jobs are active | Reapply the version-matched Helm override and confirm that Databricks is selected as the processing environment. |
| Job starts but operations do not run | Confirm the service endpoint, username, password, and network allowlist. |
Need help?
Contact your Qualytics account manager with the chart version, bundle version, Databricks workspace URL, and the failing step. Do not send secrets in plain text.