diff --git a/docs/layouts/shortcodes/generated/kubernetes_config_configuration.html b/docs/layouts/shortcodes/generated/kubernetes_config_configuration.html
index a3084585bf4cb..17382bd3e5637 100644
--- a/docs/layouts/shortcodes/generated/kubernetes_config_configuration.html
+++ b/docs/layouts/shortcodes/generated/kubernetes_config_configuration.html
@@ -266,6 +266,12 @@
Map |
The user-specified labels that are set to the rest Service. The value should be in the form of a1:v1,a2:v2 |
+
+ kubernetes.rest-service.port-name |
+ "rest" |
+ String |
+ The name assigned to the rest port on the JobManager rest Service. Some environments enforce port-naming policies (for example, service meshes that route by port name); this option lets operators align Flink's rest port name with such policies. Must be a valid IANA service name (lowercase alphanumeric and '-', starting and ending alphanumeric, max 15 characters). Defaults to 'rest' to preserve backward compatibility. |
+
kubernetes.secrets |
(none) |
diff --git a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/KubernetesResourceManagerDriver.java b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/KubernetesResourceManagerDriver.java
index 1a50c4a564806..e99f2f2637eb0 100644
--- a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/KubernetesResourceManagerDriver.java
+++ b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/KubernetesResourceManagerDriver.java
@@ -304,9 +304,8 @@ private void updateKubernetesServiceTargetPortIfNecessary() throws Exception {
Preconditions.checkArgument(
restPort > 0, "Failed to parse rest port from " + webInterfaceUrl);
final String restServiceName = ExternalServiceDecorator.getExternalServiceName(clusterId);
- flinkKubeClient
- .updateServiceTargetPort(restServiceName, Constants.REST_PORT_NAME, restPort)
- .get();
+ final String restPortName = flinkConfig.get(KubernetesConfigOptions.REST_SERVICE_PORT_NAME);
+ flinkKubeClient.updateServiceTargetPort(restServiceName, restPortName, restPort).get();
if (!HighAvailabilityMode.isHighAvailabilityModeActivated(flinkConfig)) {
final String internalServiceName =
InternalServiceDecorator.getInternalServiceName(clusterId);
diff --git a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/configuration/KubernetesConfigOptions.java b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/configuration/KubernetesConfigOptions.java
index bac5cced79901..45c745e3f9329 100644
--- a/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/configuration/KubernetesConfigOptions.java
+++ b/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/configuration/KubernetesConfigOptions.java
@@ -385,6 +385,21 @@ public class KubernetesConfigOptions {
"The user-specified labels that are set to the rest Service. The value should be "
+ "in the form of a1:v1,a2:v2");
+ public static final ConfigOption REST_SERVICE_PORT_NAME =
+ key("kubernetes.rest-service.port-name")
+ .stringType()
+ .defaultValue(Constants.REST_PORT_NAME)
+ .withDescription(
+ "The name assigned to the rest port on the JobManager rest Service. "
+ + "Some environments enforce port-naming policies (for example, "
+ + "service meshes that route by port name); this option lets operators "
+ + "align Flink's rest port name with such policies. "
+ + "Must be a valid IANA service name (lowercase alphanumeric and '-', "
+ + "starting and ending alphanumeric, max 15 characters). "
+ + "Defaults to '"
+ + Constants.REST_PORT_NAME
+ + "' to preserve backward compatibility.");
+
public static final ConfigOption