Skip to content

[doc] Add GKE Gateway example for ingress#63546

Merged
edoakes merged 1 commit into
ray-project:masterfrom
lalitc375:gke-gateway
May 24, 2026
Merged

[doc] Add GKE Gateway example for ingress#63546
edoakes merged 1 commit into
ray-project:masterfrom
lalitc375:gke-gateway

Conversation

@lalitc375

Copy link
Copy Markdown
Contributor

Description

This PR updates the KubeRay ingress documentation to include a comprehensive guide on using the GKE Gateway API to access a Ray cluster.

Specifically, this PR accomplishes the following:

  • Adds a new 5th example section detailing GKE Gateway API support.
  • Provides a complete YAML configuration (ray-cluster-gke-gateway.yaml) for setting up a Gateway (using the gke-l7-rilb internal gateway class) and an HTTPRoute to route traffic to the raycluster-kuberay-head-svc on port 8265.
  • Includes step-by-step instructions (Steps 1 through 8) covering everything from installing the KubeRay operator via Helm, applying the gateway configurations, to fetching the allocated internal IP for accessing the Ray Dashboard.

Related issues

NONE

Additional information

NONE

@lalitc375 lalitc375 requested a review from a team as a code owner May 20, 2026 17:43

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds documentation for GKE Gateway API support, including a new guide with prerequisites and step-by-step instructions for deploying Gateway and HTTPRoute resources. Feedback suggests improving the guide by using kubectl wait for status checks and clarifying the accessibility limitations of internal IP addresses, including a kubectl port-forward alternative.

# NAME CLASS ADDRESS PROGRAMMED AGE
# ray-cluster-gateway gke-l7-rilb 10.0.1.15 True 54m

# Step 7: Check Ray Dashboard by visiting the allocated internal IP in your browser. (In this example, it is 10.0.1.15)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Since the example uses the gke-l7-rilb (Regional Internal Load Balancer) class, the allocated IP address is internal to your VPC. It will not be accessible directly from a browser on your local machine unless you have a VPN, a proxy, or are using a jump box within the same VPC. It would be helpful to clarify this limitation to avoid user confusion when the dashboard is not reachable.

Suggested change
# Step 7: Check Ray Dashboard by visiting the allocated internal IP in your browser. (In this example, it is 10.0.1.15)
# Step 7: Check Ray Dashboard. Since this is an internal Gateway, the IP is only accessible from within the VPC. To access it from your local machine, you can use a VPN, a proxy, or for temporary testing, use `kubectl port-forward`:
# kubectl port-forward service/raycluster-kuberay-head-svc 8265:8265
Comment on lines +215 to +216
# Step 6: After a few minutes, GKE allocates an internal IP for the gateway. Check it using:
kubectl get gateway ray-cluster-gateway

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of waiting "a few minutes" manually, you can use kubectl wait to programmatically check when the Gateway has been assigned an IP and is ready.

Suggested change
# Step 6: After a few minutes, GKE allocates an internal IP for the gateway. Check it using:
kubectl get gateway ray-cluster-gateway
# Step 6: Wait for GKE to allocate an internal IP and program the Gateway.
kubectl wait --for=condition=Programmed gateway/ray-cluster-gateway --timeout=5m
kubectl get gateway ray-cluster-gateway
@lalitc375 lalitc375 changed the title [doc] Update GKE Gateway example to use internal gateway (gke-l7-rilb) May 20, 2026
@ray-gardener ray-gardener Bot added core Issues that should be addressed in Ray Core community-contribution Contributed by the community labels May 20, 2026
@edoakes edoakes added the go add ONLY when ready to merge, run all tests label May 21, 2026
@edoakes

edoakes commented May 21, 2026

Copy link
Copy Markdown
Collaborator
Comment thread doc/source/cluster/kubernetes/k8s-ecosystem/ingress.md Outdated
@spencer-p

Copy link
Copy Markdown
Contributor

+1 to the gemini comments re kubectl wait, and that the internal LB address may not be reachable from the users' browser.

This guide is focused on exposing the Ray API -- if we want to leave a note for serving, this guide would be good to link to.

There is an aside about the risk of exposing the gateway to the internet -- I think there is maybe an opportunity to call out that the gateway can be configured to do authentication and authorization. Maybe just a note linking to Secure a Gateway? What do you think?

@lalitc375

Copy link
Copy Markdown
Contributor Author

reply to @spencer-p
Addressed your comments.

@@ -2,17 +2,18 @@

# Ingress

Four examples show how to use ingress to access your Ray cluster:
Five examples show how to use Ingress or Gateway to access your Ray cluster:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit:

The following examples show how to use Ingress or Gateway to access your Ray clusters:

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Signed-off-by: Lalit Chauhan <lalitchauhan@google.com>
@edoakes edoakes merged commit e07ca27 into ray-project:master May 24, 2026
6 checks passed
@lalitc375 lalitc375 deleted the gke-gateway branch May 26, 2026 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community-contribution Contributed by the community core Issues that should be addressed in Ray Core go add ONLY when ready to merge, run all tests

4 participants