@@ -98,6 +98,7 @@ tags, and then generate with `hack/update-toc.sh`.
98
98
- [ DNS] ( #dns )
99
99
- [ EndpointSlice] ( #endpointslice )
100
100
- [ Endpoint TTL] ( #endpoint-ttl )
101
+ - [ Service Types] ( #service-types )
101
102
- [ Consumption of EndpointSlice] ( #consumption-of-endpointslice )
102
103
- [ Constraints and Conflict Resolution] ( #constraints-and-conflict-resolution )
103
104
- [ Global Properties] ( #global-properties )
@@ -504,6 +505,33 @@ controller, that may run inside each cluster, is responsible for watching each
504
505
lease and removing all remaining `EndpointSlices` associated with a cluster when
505
506
that cluster’s lease expires.
506
507
508
+ #### Service Types
509
+
510
+ - `ClusterIP`: This is the the straightforward case most of the proposal
511
+ assumes. Each `EndpointSlice` associated with the exported service is combined
512
+ with slices from other clusters to make up the supercluster service. They will
513
+ be imported to the cluster behind the supercluster IP.
514
+
515
+ ```
516
+ <<[ UNRESOLVED re: stateful sets] >>
517
+ Today's headless services likely don't want a VIP and may not function
518
+ properly behind one. It probably doesn't make sense to export a current
519
+ headless service to the supercluster, it would work, but likely not the way
520
+ you want.
521
+ <<[ /UNRESOLVED] >>
522
+ ```
523
+ - `NodePort` and `LoadBalancer`: These create `ClusterIP` services that would
524
+ sync as expected. For example If you export a `NodePort` service, the
525
+ resulting cross-cluster service will still be a supercluster IP type. You
526
+ could use node ports to access the cluster-local service in the source
527
+ cluster, but not in any other cluster, and it would only route to local
528
+ endpoints.
529
+ - `ExternalName`: It doesn't make sense to export an `ExternalName` service.
530
+ They can't be merged with other exports, and it seems like it would only
531
+ complicate deployments by even attempting to stretch them across clusters.
532
+ Instead, regular `ExternalName` type `Services` should be created in each
533
+ cluster individually.
534
+
507
535
### Consumption of EndpointSlice
508
536
509
537
To consume a supercluster service, users will use the domain name associated
0 commit comments