@@ -192,15 +192,31 @@ incorrectly or objects being garbage collected mistakenly.
192
192
We will use the existing ` StorageVersion ` API to figure out which group, versions,
193
193
and resources an apiserver can serve.
194
194
195
+ We will also need to make discover reports the same set of resources everywhere. We propose
196
+ routing discovery requests from old-apiservers to the new api-server, so that all discovery
197
+ requests reflect the newest one. We specifically rule out merging discovery docs, because
198
+ merging discovery is:
199
+
200
+ * complicated
201
+ * represents an intermediate state which may not even make sense
202
+ * the problems that merging discovery solves (i.e. preventing orphaned objects) can actually
203
+ be solved by the dynamic feature flag KEP, so solving it here would be redundant and
204
+ unnecessarily complex.
205
+
206
+ By routing all discovery requests to the newest apiserver, we can ensure that namespace and gc
207
+ controllers do what they would be doing if the upgrade happened instantaneously.
208
+
209
+
195
210
API server change:
196
211
* A new handler is added to the stack:
212
+
197
213
- If the request is for a group/version/resource the apiserver doesn't have
198
214
locally (we can use the StorageVersion API), it will proxy the request to
199
- one of the ` serviceableBy ` s if one is available . If one is not available,
200
- then we will return a 503 (there is a small possibility of a race between
201
- the controller registering the apiserver with the resources it can serve
202
- and receiving a request for a resource that is not yet available on that
203
- apiserver).
215
+ one of the apiservers that is listed in the object . If an apiserver fails
216
+ to respond is not available, then we will return a 503 (there is a small
217
+ possibility of a race between the controller registering the apiserver
218
+ with the resources it can serve and receiving a request for a resource
219
+ that is not yet available on that apiserver).
204
220
205
221
### User Stories (Optional)
206
222
@@ -256,8 +272,6 @@ TODO: security / cert stuff.
256
272
257
273
## Design Details
258
274
259
- TODO: specific API change(s)
260
-
261
275
TODO: explanation of how the handler will determine a request is for a resource
262
276
that should be proxied.
263
277
0 commit comments