Skip to content

Follow-up: in-transit mTLS for Ray channels (RAY_USE_TLS + cert-manager) #29

Description

@brandonrc

Context

The hardening PR makes NetworkPolicy the in-cluster authorization boundary for Ray's unauthenticated ports (10001 client, 6379 GCS, 8265 dashboard/job API). That restricts who can connect, but:

  • traffic between Ray nodes and from clients is plaintext
  • any allow-listed client is fully trusted by GCS — there is no per-client identity, no authn, no authz once a connection is admitted

Proposal

Support Ray's in-transit TLS (tls-auth docs) as an opt-in chart feature:

  • tls.enabled values gate
  • a cert-manager Certificate per cluster (chart-templated, cert-manager becomes a soft dependency)
  • RAY_USE_TLS=1 + RAY_TLS_SERVER_CERT / RAY_TLS_SERVER_KEY / RAY_TLS_CA_CERT env on head and worker
  • an initContainer (or cert-manager csi-driver) producing per-pod certs with correct SANs

Known blockers / open questions

  • SAN generation vs RayService naming: RayService generates RayCluster names with a random suffix, so head/worker pod DNS names aren't statically known at template time. Options: wildcard SANs for the namespace (*.<ns>.svc), or per-pod cert issuance via csi-driver.
  • Performance: Ray docs note TLS on gRPC channels costs meaningful GCS throughput (benchmarks ~10–20%).
  • Client-side distribution: every client (checkmaite api, Jupyter notebooks via data-science-pack) needs the CA cert + a client cert mounted and the same RAY_USE_TLS env — needs a documented pattern per consumer pack.
  • Interaction with the zero-downtime upgrade flow (two clusters live simultaneously, one Certificate?).

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Start date

    None yet

    Target date

    None yet

    Size

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions