@@ -285,7 +285,7 @@ Gateways are in play; `gwctl` or something similar SHOULD be able to show her
285
285
which Routes are bound to which Gateways in every case, not just with default
286
286
Gateways.
287
287
288
- ** Open Questions:**
288
+ # #### Open Questions
289
289
290
290
Should the Gateway also add a `condition` explicitly expressing that the Route
291
291
has been claimed by the default Gateway, perhaps with `type : DefaultGateway`?
@@ -308,9 +308,9 @@ type GatewaySpec struct {
308
308
309
309
If ` spec.isDefault ` is set to ` true ` , the Gateway MUST claim Routes that have
310
310
specified no ` parentRefs ` (subject to the usual Gateway API rules about which
311
- Routes may be bound to a Gateway), and it MUST update its own ` status ` to with
312
- a ` condition ` of type ` DefaultGateway ` and ` status ` true to indicate that it
313
- is the default Gateway, for example:
311
+ Routes may be bound to a Gateway), and it MUST update its own ` status ` with a
312
+ ` condition ` of type ` DefaultGateway ` and ` status ` true to indicate that it is
313
+ the default Gateway, for example:
314
314
315
315
``` yaml
316
316
status :
@@ -362,44 +362,44 @@ possible options here.
362
362
363
363
1. Don't bother with any enforcement logic.
364
364
365
- In this case, a Route with no `parentRefs` specified will be bound to _all_
366
- Gateways that have `spec.isDefault` set to `true`. Since Gateway API
367
- already allows a Route to be bound to multiple Gateways, and the Route
368
- ` status` is already designed for it, this should function without
369
- difficulty.
365
+ In this case, a Route with no `parentRefs` specified will be bound to _all_
366
+ Gateways that have `spec.isDefault` set to `true`. Since Gateway API
367
+ already allows a Route to be bound to multiple Gateways, and the Route
368
+ ` status` is already designed for it, this should function without
369
+ difficulty.
370
370
371
371
2. Treat multiple Gateways with `spec.isDefault` set to `true` as if no
372
372
Gateway has `spec.isDefault` set to `true`.
373
373
374
- If we assume that all Gateway controllers in a cluster can see all the
375
- Gateways in the cluster, then detecting that multiple Gateways have
376
- ` spec.isDefault` set to `true` is relatively straightforward.
377
-
378
- For option 2, every Gateway with `spec.isDefault` set to `true` can simply
379
- refuse to accept Routes with no `parentRefs` specified, behaving as if no
380
- Gateway has been chosen as the default. Each Gateway would also update its
381
- ` status` with a `condition` of type `DefaultGateway` and `status` false to
382
- indicate that it is not the default Gateway, for example :
383
-
384
- ` ` ` yaml
385
- status:
386
- conditions:
387
- - type: DefaultGateway
388
- status: "False"
389
- lastTransitionTime: "2025-10-01T12:00:00Z"
390
- message: "Multiple Gateways are marked as default"
391
- ` ` `
374
+ If we assume that all Gateway controllers in a cluster can see all the
375
+ Gateways in the cluster, then detecting that multiple Gateways have
376
+ ` spec.isDefault` set to `true` is relatively straightforward.
377
+
378
+ For option 2, every Gateway with `spec.isDefault` set to `true` can simply
379
+ refuse to accept Routes with no `parentRefs` specified, behaving as if no
380
+ Gateway has been chosen as the default. Each Gateway would also update its
381
+ ` status` with a `condition` of type `DefaultGateway` and `status` false to
382
+ indicate that it is not the default Gateway, for example :
383
+
384
+ ` ` ` yaml
385
+ status:
386
+ conditions:
387
+ - type: DefaultGateway
388
+ status: "False"
389
+ lastTransitionTime: "2025-10-01T12:00:00Z"
390
+ message: "Multiple Gateways are marked as default"
391
+ ` ` `
392
392
393
393
3. Perform conflict resolution as with Routes.
394
394
395
- In this case, the oldest Gateway with `spec.isDefault` set to `true` will
396
- be considered the only default Gateway. That oldest Gateway will accept all
397
- Routes with no `parentRefs` specified, while all other Gateways with
398
- ` spec.isDefault` set to `true` will ignore those Routes.
395
+ In this case, the oldest Gateway with `spec.isDefault` set to `true` will
396
+ be considered the only default Gateway. That oldest Gateway will accept all
397
+ Routes with no `parentRefs` specified, while all other Gateways with
398
+ ` spec.isDefault` set to `true` will ignore those Routes.
399
399
400
- The oldest default Gateway will update its `status` to reflect that it the
401
- default Gateway; all other Gateways with `spec.isDefault` set to `true`
402
- will update their `status` as in Option 2.
400
+ The oldest default Gateway will update its `status` to reflect that it the
401
+ default Gateway; all other Gateways with `spec.isDefault` set to `true`
402
+ will update their `status` as in Option 2.
403
403
404
404
Unfortunately, option 2 will almost certainly cause downtime in any case where
405
405
Chihiro wants to change the default Gateway :
0 commit comments