Skip to content

Commit 82dc787

Browse files
committed
add notes about storage version and how the storage version is selected
1 parent 02e2b65 commit 82dc787

File tree

1 file changed

+9
-5
lines changed
  • keps/sig-architecture/4330-compatibility-versions

1 file changed

+9
-5
lines changed

keps/sig-architecture/4330-compatibility-versions/README.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -475,11 +475,15 @@ StorageVersions specify what version an apiserver uses to write resources to etc
475475
for each API group. The StorageVersion changes across releases as API groups
476476
graduate through stability levels.
477477
478-
The StorageVersions of an API group will need to be modified to track which
479-
StorageVersions was used for each Kubernetes version that the compatibility
480-
version can be set to. This will then be used when the apiserver to write
481-
resources with the same StorageVersions used by the Kubernetes version the
482-
compatibility version is set to.
478+
During upgrades and downgrades, the storage version is particularly important.
479+
To enable upgrades and rollbacks, the version selected for storage in etcd in
480+
version N must be (en/de)codable for k8s versions N-1 through N+1.
481+
482+
Thus, to determine the storage version to use at compatibility version N, we
483+
will find the set of all supported GVRs for each of N-1, N, and N+1 and intersect
484+
them to find a list of all GVRs supported by every binary version in the window.
485+
The storage version of each group-resource is the newest
486+
(using kube-aware version sorting) version found in that list for that group-resource.
483487
484488
### API Compatibility Versioning
485489

0 commit comments

Comments
 (0)