Skip to content

Commit e1426f7

Browse files
committed
Address another round of comments
- Relax restriction on cluster.clusterset.k8s.io so it is now just a valid subdomain - Clean up language around constraints and assumptions.
1 parent d38a347 commit e1426f7

File tree

2 files changed

+23
-32
lines changed

2 files changed

+23
-32
lines changed

keps/sig-multicluster/2149-clusterid/README.md

+21-30
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ What is out of scope for this KEP? Listing non-goals helps to focus discussion
253253
and make progress.
254254
-->
255255
* 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)
257257
* Solve any problems without specific, tangible use cases (though we will leave
258258
room for extension).
259259
* In particular, this KEP explicitly does not consider
@@ -274,9 +274,9 @@ nitty-gritty.
274274
-->
275275

276276
### 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
278278
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
280280
cluster-scoped `ClusterProperty` CR with the well known name
281281
`cluster.clusterset.k8s.io` that may be referenced by workloads within the
282282
cluster. The identifier must either:
@@ -285,9 +285,9 @@ cluster. The identifier must either:
285285
DNS labels separated with a dot. The identifier may be created by an
286286
implementation dependent mechanism.
287287

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
289289
`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
291291
ClusterSet lasts, and removed when the cluster is no longer a member.
292292

293293
More detail and examples of the uniqueness, lifespan, immutability, and content
@@ -359,9 +359,9 @@ the namespace should be synced.
359359

360360
### `ClusterProperty` CRD
361361

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
365365
holding a different identification related value. Each property contains the
366366
following information:
367367

@@ -398,8 +398,6 @@ Contains a unique identifier for the containing cluster.
398398

399399
* The identifier **must** be unique within the ClusterSet to which its cluster
400400
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.
403401
* The identifier **may** be globally unique beyond the scope of its
404402
ClusterSet.
405403
* 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.
408406

409407
##### Lifespan
410408

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
412410
cluster’s membership in a ClusterSet, and as long as a `clusterset.k8s.io`
413411
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.
416412

417413

418414
##### Contents
419415

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.
425421
* The identifier **may** be used as a component in MCS DNS.
426422
* The identifier **may** be a human readable description of its cluster.
427423

428424

429425
##### Consumers
430426

431-
* **Must** be able to rely on the identifier existing, unmodified for the
427+
* **May** rely on the identifier existing, unmodified for the
432428
entire duration of its membership in a ClusterSet.
433429
* **Should** watch the `cluster.clusterset.k8s.io` property to handle
434430
potential changes if they live beyond the ClusterSet membership.
@@ -438,11 +434,6 @@ Contains a unique identifier for the containing cluster.
438434

439435
##### Notable scenarios
440436

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-
446437
**Reusing cluster names**: Since an `cluster.clusterset.k8s.io ClusterProperty`
447438
has no restrictions on whether or not a ClusterProperty can be repeatable, if a
448439
cluster unregisters from a ClusterSet it is permitted under this standard to
@@ -480,13 +471,11 @@ which it belongs.
480471
##### Contents
481472

482473
* The identifier **must** associate the cluster with a ClusterSet.
483-
* The identifier **may** be either unique or shared by members of a
484-
ClusterSet.
485474

486475

487476
##### Consumers
488477

489-
* **Must** be able to rely on the identifier existing, unmodified for the
478+
* **May** rely on the identifier existing, unmodified for the
490479
entire duration of its membership in a ClusterSet.
491480
* **Should** watch the clusterset property to detect the span of a cluster’s
492481
membership in a ClusterSet.
@@ -499,8 +488,9 @@ they do not conflict with the well known properties _and_ utilize a suffix. The
499488
following suffixes are reserved for Kubernetes and related projects: `.k8s.io`,
500489
`.kubernetes.io`. For example, an implementation may utilize the `Kind`
501490
`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.
504494

505495

506496
### Notes/Constraints/Caveats
@@ -680,7 +670,8 @@ spec:
680670

681671
A cluster in a ClusterSet is expected to be authoritatively associated with that
682672
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
684675
a human running kubectl. (The details of any specific mechanism is out of scope
685676
for the MCS API and this KEP -- see the Non-Goals section.) Mirroring this
686677
information in the cluster-local `ClusterProperty` CRD will necessarily need to

keps/sig-multicluster/2149-clusterid/kep.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ stage: beta
2424
# The most recent milestone for which work toward delivery of this KEP has been
2525
# done. This can be the current (upcoming) milestone, if it is being actively
2626
# worked on.
27-
latest-milestone: "v1.27"
27+
latest-milestone: "v1.28"
2828

2929
# The milestone at which this feature was, or is targeted to be, at each stage.
3030
milestone:
3131
# NOTE: As this is out of tree and opt-in, these are not actually k8s versions
3232
# at which this maturity level is first available, but simply informational as
3333
# to the k/k release cycle in which the maturity level was changed.
3434
alpha: "v1.26"
35-
beta: "v1.27"
35+
beta: "v1.28"
3636
# stable: "v1.22"
3737

3838
# The following PRR answers are required at alpha release

0 commit comments

Comments
 (0)