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.

The Helm chart always renders a Kubernetes headless Service, which is required by StatefulSets for stable per-pod DNS. The hdp.services.hdpService.headless.enabled flag selects which external routing topology is active.
  • Ingress mode The Ingress controller (hdp.hdpingressconfiguration) handles external access. Set hdp.services.hdpService.headless.enabled to false. 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.enabled to true.
Important: 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  
Important: 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

Take the following steps to switch an existing deployment from Ingress mode to headless mode.
  1. Quiesce active user sessions and ensure the upstream gateway is ready.
  2. Update the following parameters in the values.yaml file:
    hdp:
          services:
            hdpService:
              headless:
                enabled: true
          hdpingressconfiguration:
            enabled: false
            agic:
              enabled: false 
  3. Execute the upgrade command.
     helm upgrade release-name chart-name --version version-name --values values.yaml
          --namespace namespace-value
    Note: Pods are not restarted during this operation. Only the Ingress resource is removed and the NOTES.txt output changes. The StatefulSet spec is unchanged.
  4. 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.local

    Confirm per-pod DNS resolution is working.

  5. 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.