From d23282431504f0a49457c5d65969b6a15e04e796 Mon Sep 17 00:00:00 2001 From: Arthur Outhenin-Chalandre Date: Tue, 30 Sep 2025 18:02:29 +0200 Subject: [PATCH] KEP 1645: add traffic distribution and internal traffic policies fields Signed-off-by: Arthur Outhenin-Chalandre --- .../1645-multi-cluster-services-api/README.md | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/keps/sig-multicluster/1645-multi-cluster-services-api/README.md b/keps/sig-multicluster/1645-multi-cluster-services-api/README.md index 3c37d726ef6..a35ef2b6949 100644 --- a/keps/sig-multicluster/1645-multi-cluster-services-api/README.md +++ b/keps/sig-multicluster/1645-multi-cluster-services-api/README.md @@ -107,6 +107,8 @@ tags, and then generate with `hack/update-toc.sh`. - [Service Port](#service-port) - [Headlessness](#headlessness) - [Session Affinity](#session-affinity) + - [Internal Traffic Policy](#internal-traffic-policy) + - [Traffic Distribution](#traffic-distribution) - [Labels and Annotations](#labels-and-annotations) - [Test Plan](#test-plan) - [Graduation Criteria](#graduation-criteria) @@ -481,8 +483,9 @@ ensure that a name is shared by multiple services within the namespace if and only if they are instances of the same service. Most information about the service, including ports, backends, topology and -session affinity, will continue to be stored in the `Service` objects, which -are each name mapped to a `ServiceExport`. This does not apply for labels and +session affinity, internal traffic policy, and traffic distribution +will continue to be stored in the `Service` objects, which are each name +mapped to a `ServiceExport`. This does not apply for labels and annotations which are stored in `ServiceExport` directly in `spec.exportedLabels` and `spec.exportedAnnotations`. Exporting labels and annotations is optionally supported by MCS-API implementations. If supported, annotations or labels must @@ -575,6 +578,12 @@ type ServiceImportSpec struct { SessionAffinity corev1.ServiceAffinity `json:"sessionAffinity"` // +optional SessionAffinityConfig *corev1.SessionAffinityConfig `json:"sessionAffinityConfig"` + // +optional + InternalTrafficPolicy *corev1.ServiceInternalTrafficPolicy `json:"internalTrafficPolicy,omitempty"` + // The possible TrafficDistribution values should match what can be similarly + // defined in a Service, see https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution + // +optional + TrafficDistribution *string `json:"trafficDistribution,omitempty"` } // ServicePort represents the port on which the service is exposed @@ -1026,6 +1035,18 @@ Session affinity affects a service as a whole for a given consumer. The derived service's session affinity will be decided according to the conflict resolution policy. +#### Internal Traffic Policy + +Internal traffic policy affects a service as a whole for a given consumer. The derived +service's internal traffic policy will be decided according to the conflict resolution +policy. + +#### Traffic Distribution + +Traffic distribution affects a service as a whole for a given consumer. The derived +service's traffic distribution will be decided according to the conflict resolution +policy. + #### Labels and Annotations If supported, exporting labels and annotations would affect a `Service` as a whole