Headless service external routing
- Last Updated: September 10, 2026
- 2 minute read
- Hybrid Data Pipeline
- Version 5.0
- Documentation
The Hybrid Data Pipeline Helm chart supports two mutually exclusive external access topologies. By default, the chart uses an Ingress controller to handle external access. Alternatively, you may enable headless service mode, when you want to configure an upstream gateway that routes traffic directly to individual Hybrid Data Pipeline pods using per-pod DNS records.
- Headless Service ports
- Configure headless service mode
- Responsibilities in headless mode
- Switching from Ingress mode to headless mode
hdp.services.hdpService.headless.enabled flag selects which external
routing topology is active.- Ingress mode The Ingress controller
(
hdp.hdpingressconfiguration) handles external access. Sethdp.services.hdpService.headless.enabledtofalse. This is the default. - Headless mode An upstream gateway (for example, an API gateway or
external load balancer) routes traffic directly to per-pod DNS records. Set
hdp.services.hdpService.headless.enabledtotrue.
hdp.services.hdpService.headless.enabled and
hdp.hdpingressconfiguration.enabled cannot both be set to
true. The chart fails at render time with an explicit error
message if both are set.Headless Service ports
The headless Service exposes the following ports:
| Port name | Default value | Purpose |
|---|---|---|
| hdpserver-port | 8080 | Hybrid Data Pipeline REST API and Web UI |
| opaccessor-port | 40501 | On-Premises Connector |
| notification-port | 11280 | Notification Server |
| internal-api-port | 8190 (fixed) | Internal cluster API (not for external use) |
Configure headless service mode
To enable headless service mode, update the following parameters in the
values.yaml file.
hdp:
services:
hdpService:
headless:
enabled: true
nameOverride: ""
hdpingressconfiguration:
enabled: false
agic:
enabled: false
StatefulSet.spec.serviceName is immutable. Changing
nameOverride on an existing release requires deleting the
StatefulSet before running helm upgrade. To preserve running pods
during this operation, use the --cascade=orphan flag.kubectl delete statefulset <name> -n <namespace> --cascade=orphan
helm upgrade ...
Responsibilities in headless mode
When hdp.services.hdpService.headless.enabled is set to
true, the following items are not provided by the chart and must be
configured in the upstream gateway or infrastructure:
- TLS termination and certificate management
- Sticky-session cookies
- Public hostname and DNS registration
- Web Application Firewall (WAF) rules
Switching from Ingress mode to headless mode
- Quiesce active user sessions and ensure the upstream gateway is ready.
- Update the following parameters in the
values.yamlfile:hdp: services: hdpService: headless: enabled: true hdpingressconfiguration: enabled: false agic: enabled: false - Execute the upgrade
command.
helm upgrade release-name chart-name --version version-name --values values.yaml --namespace namespace-valueNote: Pods are not restarted during this operation. Only the Ingress resource is removed and the NOTES.txt output changes. The StatefulSet spec is unchanged. - Verify the upgrade.
kubectl get ingress -n <namespace>Expected response: No resources found.
kubectl get svc -n <namespace>Confirm the headless Service is present.
nslookup <pod>.<headlessSvc>.<ns>.svc.cluster.localConfirm per-pod DNS resolution is working.
- To roll back, reverse the values above and run
helm upgrade. No pod restart occurs.
For descriptions of supported parameters, see Helm chart parameters or refer to the values.yaml file in the Hybrid Data Pipeline Helm chart GitHub repository.