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]