Skip to content

Commit 185a3a2

Browse files
committed
Apply feedback
1 parent 92be63c commit 185a3a2

File tree

1 file changed

+25
-2
lines changed
  • keps/sig-architecture/4330-compatibility-versions

1 file changed

+25
-2
lines changed

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

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,25 @@ still performing a stepwise upgrade of Kubernetes control-plane. For example:
201201
- keep binary-version 1.31 while upgrading compat-version to 1.30 (stepwise upgrade of compatibility)
202202
- keep binary-version 1.31 while upgrading compat-version to 1.31 (stepwise upgrade of compatibility)
203203

204+
Benefits to upgrading binary version independent of compatibility version:
205+
206+
- During an upgrade, it is possible verify the binary version before
207+
accumulating any client usage of features/API at the new version, making
208+
a binary rollback at this stage of an upgrade fundamentally safer
209+
- Any upgrade system that successfully detects failures between upgrade steps
210+
can report which upgrade step failed. This makes it easier to diagnose the
211+
failures, because there are fewer possible causes of the failure. (There's a
212+
huge difference between "A cluster upgrade failed" and "A cluster upgrade
213+
failed when only the apiserver's binary version changed").
214+
- For upgrades where multiple failures occur, this increases the odds those
215+
failures are split across steps. An upgrade system that is able to pause after
216+
a step where failures are detected allow for failures at that step to be
217+
addressed before proceeding to subsequent steps. These failures can be
218+
addressed without the disruption and "noise" from failures in subsequent
219+
steps.
220+
- A compatibility version rollback can be performed without changing binary
221+
version.
222+
204223

205224
### Goals
206225

@@ -326,6 +345,10 @@ compatibility version support.
326345
In order to preserve the behavior of in-development features across multiple releases,
327346
feature implementation history should also be preserved in the code base.
328347
348+
Only sigificant and observable changes in feature capabilities should be across
349+
releases. We do not want to impose a unreasonable burdon on feature authors.
350+
Bugs, performance optimizations should not be gated by version.
351+
329352
Naively, the feature implementations can be gated by version number.
330353
For example, if `FeatureA` is partially implemented in 1.28 and additional functionality
331354
is added in 1.29, the feature developer is expected to gate the functionality by version.
@@ -607,8 +630,8 @@ new CEL function|-|function in StoredExpressions CEL environment|CEL function do
607630
introduced CEL function|function in StoredExpressions CEL environment|function in NewExpressions CEL environment|Resources already containing CEL expression can be evaluated|CEL expression can be written to resources and can be evaluted from storage
608631
609632
- The other edge cases we will test are:
610-
- `--compatibility-version=<N-2>` - fails validation
611-
- `--compatibility-version=<N+1>` - fails validation
633+
- `--compatibility-version=<N-2>` - fails flag validation, binary exits
634+
- `--compatibility-version=<N+1>` - fails flag validation, binary exits
612635
613636
##### e2e tests
614637

0 commit comments

Comments
 (0)