Skip to content

Commit ef06887

Browse files
authored
Merge pull request #16 from alexzielenski/compat-versions
add notes about storage version and how the storage version is selected
2 parents 4c8ba6d + 82dc787 commit ef06887

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
@@ -494,11 +494,15 @@ StorageVersions specify what version an apiserver uses to write resources to etc
494494
for each API group. The StorageVersion changes across releases as API groups
495495
graduate through stability levels.
496496
497-
The StorageVersions of an API group will need to be modified to track which
498-
StorageVersions was used for each Kubernetes version that the compatibility
499-
version can be set to. This will then be used when the apiserver to write
500-
resources with the same StorageVersions used by the Kubernetes version the
501-
compatibility version is set to.
497+
During upgrades and downgrades, the storage version is particularly important.
498+
To enable upgrades and rollbacks, the version selected for storage in etcd in
499+
version N must be (en/de)codable for k8s versions N-1 through N+1.
500+
501+
Thus, to determine the storage version to use at compatibility version N, we
502+
will find the set of all supported GVRs for each of N-1, N, and N+1 and intersect
503+
them to find a list of all GVRs supported by every binary version in the window.
504+
The storage version of each group-resource is the newest
505+
(using kube-aware version sorting) version found in that list for that group-resource.
502506
503507
### API Compatibility Versioning
504508

0 commit comments

Comments
 (0)