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-architecture/4330-compatibility-versions/README.md
+25-2Lines changed: 25 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -201,6 +201,25 @@ still performing a stepwise upgrade of Kubernetes control-plane. For example:
201
201
- keep binary-version 1.31 while upgrading compat-version to 1.30 (stepwise upgrade of compatibility)
202
202
- keep binary-version 1.31 while upgrading compat-version to 1.31 (stepwise upgrade of compatibility)
203
203
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
+
204
223
205
224
### Goals
206
225
@@ -326,6 +345,10 @@ compatibility version support.
326
345
In order to preserve the behavior of in-development features across multiple releases,
327
346
feature implementation history should also be preserved in the code base.
328
347
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
+
329
352
Naively, the feature implementations can be gated by version number.
330
353
For example, if `FeatureA` is partially implemented in 1.28 and additional functionality
331
354
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
607
630
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
0 commit comments