@@ -657,12 +657,12 @@ this cluster.
657
657
# ### Service Types
658
658
659
659
- `ClusterIP` : This is the straightforward case most of the proposal assumes.
660
- Each `EndpointSlice` in a producing cluster associated with the exported
661
- service is combined with slices from other clusters to make up the clusterset
660
+ Each endpoint from a producing cluster associated with the exported service is
661
+ aggregated with endpoints from other clusters to make up the clusterset
662
662
service. They will be imported to the cluster behind the clusterset IP, with a
663
663
` ServiceImport` of type `ClusterSetIP`. The details on how the clusterset IP
664
664
is allocated or how the combined slices are maintained may vary by
665
- implementation; see also [EndpointSlices ](#EndpointSlices ).
665
+ implementation; see also [Tracking Endpoints ](#TrackingEndpoints ).
666
666
- `ClusterIP : none` (Headless): Headless services are supported and will be
667
667
imported with a `ServiceImport` like any other `ClusterIP` service, but do not
668
668
configure a VIP and must be consumed via [DNS](#DNS). Their `ServiceImport`s
@@ -854,15 +854,19 @@ additional label gives additional context, which is implementation-dependent and
854
854
may be used for instance to uniquely identify the cluster registry with which a
855
855
cluster is registered.
856
856
857
- ### EndpointSlices
858
-
859
- _Optional to create, but specification defined if present._
857
+ ### Tracking Endpoints
860
858
861
859
The specific mechanism by which the `mcs-controller` maintains references to the
862
860
individual backends for an aggregated service is an implementation detail not
863
861
fully prescribed by this specification. Implementations may depend on a higher
864
862
level (possibly vendor-specific) API, offload to a load balancer or xDS server
865
- (like Envoy), or use Kubernetes networking APIs.
863
+ (like Envoy), or use Kubernetes networking APIs. If the implementation depends
864
+ on Kubernetes networking APIs, specifically `EndpointSlice` objects, they must
865
+ conform to the specification in the following section.
866
+
867
+ #### Using `EndpointSlice` objects to track endpoints
868
+
869
+ _Optional to create, but specification defined if present._
866
870
867
871
If an implementation does create `discovery.k8s.io/v1 EndpointSlice`s, they must
868
872
conform to the following structure. This structure was originally required as
@@ -892,7 +896,9 @@ imported for a service are not guaranteed to exactly match the originally
892
896
exported `EndpointSlice`s, but each slice is guaranteed to map only to a single
893
897
source cluster.
894
898
895
- The mcs-controller is responsible for managing imported `EndpointSlice`s.
899
+ If the implementation is using `EndpointSlice`s in this way, the mcs-controller
900
+ is responsible for managing the imported `EndpointSlice`s and making sure they
901
+ are conformant with this section.
896
902
897
903
```yaml
898
904
apiVersion: multicluster.k8s.io/v1alpha1
0 commit comments