Jiwon Park created SPARK-56275:
----------------------------------

             Summary: Set appProtocol on Kubernetes service ports
                 Key: SPARK-56275
                 URL: https://issues.apache.org/jira/browse/SPARK-56275
             Project: Spark
          Issue Type: Improvement
          Components: Kubernetes
    Affects Versions: kubernetes-operator-0.9.0
            Reporter: Jiwon Park


Kubernetes service ports support an {{appProtocol}} field that hints service 
meshes
(e.g. Istio, Linkerd) and ingress controllers about the application-layer 
protocol
in use on each port. Without this field, service meshes treat all traffic as 
opaque
TCP, which prevents L7-aware load balancing, protocol-specific retries, and gRPC
health checking.

This improvement sets {{appProtocol}} on service ports managed by the Spark 
Kubernetes Operator:

*SparkCluster services* (created directly by the operator):
 * Master service: {{web}} (8080) → {{{}http{}}}, {{spark}} (7077) → 
{{{}tcp{}}}, {{rest}} (6066) → {{http}}
 * Worker service: {{web}} (8081) → {{http}}

*SparkApplication driver service* (created by Spark's DriverServiceFeatureStep 
and included in driverResources):
 * {{driver-rpc-port}} → {{tcp}}
 * {{blockmanager}} → {{tcp}}
 * {{spark-ui}} → {{http}}
 * {{spark-connect}} → {{grpc}}

For SparkApplication, ports that already have {{appProtocol}} set (e.g. via 
user-defined service templates) are left unchanged to preserve user overrides.

This change is non-breaking: environments without a service mesh simply ignore 
the field.

See also: [https://github.com/kubeflow/spark-operator/pull/2823]



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to