You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: keps/sig-multicluster/2149-clusterid/README.md
+21-30
Original file line number
Diff line number
Diff line change
@@ -253,7 +253,7 @@ What is out of scope for this KEP? Listing non-goals helps to focus discussion
253
253
and make progress.
254
254
-->
255
255
* Define any characteristics of the system that tracks cluster ids within a
256
-
cluster (i.e. a cluster registry)
256
+
ClusterSet (i.e. a cluster registry)
257
257
* Solve any problems without specific, tangible use cases (though we will leave
258
258
room for extension).
259
259
* In particular, this KEP explicitly does not consider
@@ -274,9 +274,9 @@ nitty-gritty.
274
274
-->
275
275
276
276
### Overview
277
-
Each cluster in a ClusterSet will be assigned a unique identifier, that lives at
277
+
Each cluster in a ClusterSet must be assigned a unique identifier, that lives at
278
278
least as long as that cluster is a member of the given ClusterSet, and is
279
-
immutable for that same lifetime. This identifier will be stored in a new
279
+
must not be changed for that same lifetime. This identifier will be stored in a new
280
280
cluster-scoped `ClusterProperty` CR with the well known name
281
281
`cluster.clusterset.k8s.io` that may be referenced by workloads within the
282
282
cluster. The identifier must either:
@@ -285,9 +285,9 @@ cluster. The identifier must either:
285
285
DNS labels separated with a dot. The identifier may be created by an
286
286
implementation dependent mechanism.
287
287
288
-
While a member of a ClusterSet, a cluster will also have an additional
288
+
While it is a member of a ClusterSet, a cluster must also have an additional
289
289
`clusterset.k8s.io ClusterProperty` which describes its current membership. This
290
-
property must be present exactly as long as the cluster's membership in a
290
+
property must be present as long as the cluster's membership in a
291
291
ClusterSet lasts, and removed when the cluster is no longer a member.
292
292
293
293
More detail and examples of the uniqueness, lifespan, immutability, and content
@@ -359,9 +359,9 @@ the namespace should be synced.
359
359
360
360
### `ClusterProperty` CRD
361
361
362
-
The `ClusterProperty` Kind provides a way to store identification related,
363
-
cluster scoped information for multi-cluster tools while creating flexibility
364
-
for implementations. A cluster may have multiple `ClusterProperty`s, each
362
+
The `ClusterProperty` Kind provides a way to store
363
+
cluster scoped information while creating flexibility
364
+
for implementations. The initial use case is to support multi-cluster tooling, but a `ClusterProperty` may be used to store any cluster-scoped data. A cluster may have multiple `ClusterProperty`s, each
365
365
holding a different identification related value. Each property contains the
366
366
following information:
367
367
@@ -398,8 +398,6 @@ Contains a unique identifier for the containing cluster.
398
398
399
399
* The identifier **must** be unique within the ClusterSet to which its cluster
400
400
belongs for the duration of the cluster’s membership.
401
-
* The identifier **should** be unique beyond the ClusterSet within the scope
402
-
of expected use.
403
401
* The identifier **may** be globally unique beyond the scope of its
404
402
ClusterSet.
405
403
* The identifier **may** be unique beyond the span of its cluster’s membership
@@ -408,27 +406,25 @@ Contains a unique identifier for the containing cluster.
408
406
409
407
##### Lifespan
410
408
411
-
* The identifier **must** exist and be immutable for the duration of a
409
+
* The identifier **must** exist and not be changed for the duration of a
412
410
cluster’s membership in a ClusterSet, and as long as a `clusterset.k8s.io`
413
411
property referring to that cluster in that ClusterSet exists.
414
-
* The identifier **must** exist for the lifespan of a cluster.
415
-
* The identifier **should** be immutable for the lifespan of a cluster.
416
412
417
413
418
414
##### Contents
419
415
420
-
* The identifier **must**either:
421
-
*be a valid [RFC-1123](https://tools.ietf.org/html/rfc1123) DNS label,
422
-
* or be composed of two valid
423
-
[RFC-1123](https://tools.ietf.org/html/rfc1123) DNS labels separated
424
-
with a dot.
416
+
* The identifier **must**be a valid [RFC-1123](https://tools.ietf.org/html/rfc1123)
417
+
DNS subdomain and should be less than 128 characters in total. This may be
418
+
used to compose larger DNS names (e.g. in the case of multi-cluster
419
+
services), so care should be take to ensure that the final names fit into the
420
+
limit of 253 characters.
425
421
* The identifier **may** be used as a component in MCS DNS.
426
422
* The identifier **may** be a human readable description of its cluster.
427
423
428
424
429
425
##### Consumers
430
426
431
-
***Must** be able to rely on the identifier existing, unmodified for the
427
+
***May** rely on the identifier existing, unmodified for the
432
428
entire duration of its membership in a ClusterSet.
433
429
***Should** watch the `cluster.clusterset.k8s.io` property to handle
434
430
potential changes if they live beyond the ClusterSet membership.
@@ -438,11 +434,6 @@ Contains a unique identifier for the containing cluster.
438
434
439
435
##### Notable scenarios
440
436
441
-
**Renaming a cluster**: Since a `cluster.clusterset.k8s.io ClusterProperty` must
442
-
be immutable for the duration of its *membership* in a given ClusterSet, the
443
-
property contents can be "changed" by unregistering the cluster from the
444
-
ClusterSet and reregistering it with the new name.
445
-
446
437
**Reusing cluster names**: Since an `cluster.clusterset.k8s.io ClusterProperty`
447
438
has no restrictions on whether or not a ClusterProperty can be repeatable, if a
448
439
cluster unregisters from a ClusterSet it is permitted under this standard to
@@ -480,13 +471,11 @@ which it belongs.
480
471
##### Contents
481
472
482
473
* The identifier **must** associate the cluster with a ClusterSet.
483
-
* The identifier **may** be either unique or shared by members of a
484
-
ClusterSet.
485
474
486
475
487
476
##### Consumers
488
477
489
-
***Must** be able to rely on the identifier existing, unmodified for the
478
+
***May** rely on the identifier existing, unmodified for the
490
479
entire duration of its membership in a ClusterSet.
491
480
***Should** watch the clusterset property to detect the span of a cluster’s
492
481
membership in a ClusterSet.
@@ -499,8 +488,9 @@ they do not conflict with the well known properties _and_ utilize a suffix. The
499
488
following suffixes are reserved for Kubernetes and related projects: `.k8s.io`,
500
489
`.kubernetes.io`. For example, an implementation may utilize the `Kind`
501
490
`ClusterProperty` to store objects with the name
502
-
`fingerprint.coolmcsimplementation.com` but not `fingerprint.k8s.io` and not
503
-
simply `fingerprint`.
491
+
`fingerprint.example.com` but not `fingerprint.k8s.io`. Cluster operators are
492
+
free to use non-namespaced properties (e.g. `fingerprint`) as they see fit, but
493
+
any shared tooling should use appropriately namespaced names.
504
494
505
495
506
496
### Notes/Constraints/Caveats
@@ -680,7 +670,8 @@ spec:
680
670
681
671
A cluster in a ClusterSet is expected to be authoritatively associated with that
682
672
ClusterSet by an external process and storage mechanism with a purview above the
683
-
cluster local boundary, whether that is some form of a cluster registry or just
673
+
cluster local boundary, whether that is some form of a cluster registry, some
674
+
peer-to-peer distributed consensus and membership tracking, or just
684
675
a human running kubectl. (The details of any specific mechanism is out of scope
685
676
for the MCS API and this KEP -- see the Non-Goals section.) Mirroring this
686
677
information in the cluster-local `ClusterProperty` CRD will necessarily need to
0 commit comments