Skip to content

feat: make Ray dashboard URL configurable for HTTPS with TLS proxy#2

Open
savitagm wants to merge 4 commits into
release-1.5from
staging
Open

feat: make Ray dashboard URL configurable for HTTPS with TLS proxy#2
savitagm wants to merge 4 commits into
release-1.5from
staging

Conversation

@savitagm

Copy link
Copy Markdown

Motivation

The dashboard URL was hardcoded to http://, making it impossible for the operator to reach a Ray dashboard served over HTTPS. This change allows operators to configure a custom domain suffix so the dashboard URL is constructed using the head service DNS name, which is the name TLS certificates are typically issued for when a proxy with TLS termination fronts the Ray cluster.

Summary

  • Add --dashboard-domain-suffix and --dashboard-port operator flags to Configuration and main.go
  • Add BuildDashboardURL helper in util.go that constructs an HTTPS URL when a domain suffix is configured, falling back to the original http:// behaviour when not set
  • Wire the new flags through GetRayDashboardClientFunc and GetDashboardClient
  • Update helm chart (deployment.yaml, values.yaml) to expose the new config
  • Add unit tests for BuildDashboardURL covering HTTPS and HTTP fallback cases

URL format

When dashboard.domainSuffix is set in values.yaml:

https://<head-svc-name>.<namespace>.<domainSuffix>[:<port>]

The suffix should include any Kubernetes subdomain prefix, e.g.:

dashboard:
  domainSuffix: "svc.example.com"
  port: "8266"

Produces: https://raycluster-head-svc.my-namespace.svc.example.com:8266

Backwards compatibility

When dashboard.domainSuffix is not set (default), the operator behaves exactly as before — plain http:// URL. No changes required for existing deployments.

Test plan

  • go build ./... passes on release-1.5
  • go test ./controllers/ray/utils/ passes — all existing tests green, 7 new TestBuildDashboardURL cases added

savitagm and others added 4 commits May 12, 2026 17:21
Add --dashboard-domain-suffix and --dashboard-port operator flags so
kuberay can construct HTTPS dashboard URLs for RayClusters that are
already fronted by an envoy proxy with TLS certificates.

When domainSuffix is set the URL becomes:
  https://<head-svc>.<namespace>.<domainSuffix>[:<port>]

e.g. raycluster-head-svc.my-namespace.svc.example.com:8266

When unset the operator falls back to the original http:// behaviour,
preserving full backwards compatibility.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace CLI flags --dashboard-domain-suffix and --dashboard-port with
environment variables, keeping GetRayDashboardClientFunc signature
unchanged from upstream (mgr, useKubernetesProxy only).

Five new env vars (all optional, backwards compatible):
  KUBERAY_DASHBOARD_DOMAIN_SUFFIX   – enables HTTPS dashboard URLs
  KUBERAY_DASHBOARD_PORT            – port for HTTPS URLs
  KUBERAY_DASHBOARD_TLS_CA_CERT     – CA cert for server verification
  KUBERAY_DASHBOARD_TLS_CLIENT_CERT – client cert for mTLS
  KUBERAY_DASHBOARD_TLS_CLIENT_KEY  – client key for mTLS

Also adds emissary injection annotation to operator pod template so
mTLS client certs are provisioned automatically at the standard
/etc/emissary/certs/client/ paths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The emissary injection annotation is Datadog-specific infrastructure
config and belongs in k8s-resources, not the upstream kuberay chart.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…me override

Allows overriding the server name used for TLS certificate verification
when the server cert is issued for a different hostname than the one in
the dashboard URL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant