Skip to main content
Version 3.0.0

Gateway API

The Kubernetes Gateway API is an alternative to Ingress for exposing TDP components externally. TDP charts support both models; the choice depends on what is installed in the cluster.

See Prerequisites — Ingress and Gateway API to understand when to use each approach and how to verify cluster readiness.

How it works in TDP charts

Each TDP chart exposes two mutually exclusive control parameters:

TDPConfiguration:
gateway:
ingress:
enabled: false # Standard Kubernetes Ingress
gatewayApi:
enabled: true # Kubernetes Gateway API (HTTPRoute)

When gatewayApi.enabled: true, the chart creates an HTTPRoute resource that attaches to a Gateway already installed in the cluster.

parentRefs configuration

The gatewayApi.parentRefs block specifies which Gateway will receive the routes. This configuration is the same for all components:

gatewayApi:
parentRefs:
- name: my-gateway # name of the Gateway resource in the cluster
namespace: gateway-system # namespace where the Gateway is installed
sectionName: https # optional: specific Gateway listener

sectionName is useful when the Gateway has multiple listeners (for example, one for HTTP and one for HTTPS).

Supported components

All components below support Gateway API. The hostnames and port values are chart defaults — replace them with the addresses for your environment.

ComponentBlock keyDefault hostnamePortTLS
Argo CDgatewayApi.serverargo.tdp.local80optional
CloudBeavergatewayApi.cloudbeavercloudbeaver.local8978optional
NiFigatewayApi.nifioptional
OpenMetadatagatewayApi.openmetadataoptional
SupersetgatewayApi.supersetsuperset.tdp.local8088optional
TrinogatewayApi.trinotrino.tdp.local8080optional
Ozone — OM UIgatewayApi.omozone-om.local9874optional
Ozone — SCM UIgatewayApi.scmozone-scm.local9876optional
Ozone — S3 RESTgatewayApi.s3g.restozone-s3.local9878optional
Ozone — S3 Web UIgatewayApi.s3g.webozone-s3-ui.local19878optional

Full example — Superset in the tdp-project namespace

TDPConfiguration:
gateway:
ingress:
enabled: false
gatewayApi:
enabled: true

gatewayApi:
parentRefs:
- name: my-gateway
namespace: gateway-system
superset:
enabled: true
hostnames:
- superset.company.com
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- port: 8088
tls:
certificateRefs:
- name: superset-tls
namespace: tdp-project

TLS via Gateway

TLS can be managed by the Gateway itself (termination at the Gateway) instead of being configured per component. In this case, certificateRefs references a Secret containing the certificate:

Example:

gatewayApi:
superset:
tls:
certificateRefs:
- name: superset-tls
namespace: tdp-project

If the Gateway is already configured for TLS termination, certificateRefs can be omitted.

Troubleshooting

ProblemWhat to check
HTTPRoute created but no trafficVerify parentRefs.name and namespace point to the correct Gateway
Gateway rejects the routeConfirm the Gateway listener allows the component's namespace (allowedRoutes)
Hostname not resolvingDNS must point to the Gateway IP/endpoint, not the component's Service
TLS failureCheck that the Secret referenced in certificateRefs exists in the specified namespace
gatewayclass not foundRun kubectl get gatewayclass to confirm the controller is installed