otterc opened a new pull request, #763:
URL: https://github.com/apache/spark-kubernetes-operator/pull/763

   ### What changes were proposed in this pull request?
   Adds opt-in native support for Kubernetes Gateway API v1 routes on 
SparkApplication, parallel to the existing driverServiceIngressList. Two new 
optional lists on ApplicationSpec — driverHttpRouteList and driverGrpcRouteList 
— each pair a Service (fronting the driver pod) with an HTTPRoute or GRPCRoute. 
When the user omits the route rules, a default rule targeting the Service's 
first port is emitted.
   
   No behavior change when unset. Not tied to a specific Gateway controller — 
Istio, Envoy Gateway, and Cilium are all GA on HTTPRoute/GRPCRoute v1.
   
   Includes:
   - DriverHttpRouteSpec / DriverGrpcRouteSpec CRD types
   - DriverGatewayRouteUtils in spark-submission-worker
   - Wiring through SparkAppSubmissionWorker / SparkAppResourceSpec
   - Helm RBAC for gateway.networking.k8s.io httproutes/grpcroutes
   - Regenerated v1 CRD
   - Unit tests for default and user-provided rule shapes
   
   ### Why are the changes needed?
   Kubernetes Gateway API v1 is the successor to Ingress and is GA across major 
implementations (Istio, Envoy Gateway, Cilium, etc.). Today SparkApplication 
only supports Ingress via driverServiceIngressList; users on Gateway-based 
clusters have to create HTTPRoute / GRPCRoute objects out-of-band, which don't 
share the driver pod's lifecycle and can leak on cleanup. Native support lets 
the operator emit and GC these routes alongside the driver, on par with the 
existing Ingress path, and enables exposing Spark Connect (gRPC) endpoints — 
something Ingress can't cleanly do.
   
   ### Does this PR introduce _any_ user-facing change?
   Yes. Adds two optional fields on SparkApplication.spec:
   
   - driverHttpRouteList — emits a Service + Gateway API v1 HTTPRoute per entry 
for the driver.
   - driverGrpcRouteList — emits a Service + Gateway API v1 GRPCRoute per entry.
   
   Both are opt-in and parallel to the existing driverServiceIngressList. The 
emitted resources are owned by the driver pod, so they GC automatically. If a 
route list is set, httpRouteSpec.parentRefs / grpcRouteSpec.parentRefs and the 
service/route metadata names are required — otherwise the app moves to Failed 
with a message naming the offending field. No behavior change when both fields 
are unset.
   
   ### How was this patch tested?
   Unit tests and on an internal dev cluster
   
   ### Was this patch authored or co-authored using generative AI tooling?
   Yes.
   Generated-by: Claude Code (Claude Opus 4.7)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to