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: designs/multi-cluster.md
+19-19
Original file line number
Diff line number
Diff line change
@@ -38,7 +38,7 @@ objects. This proposal is about adding native support for multi-cluster use-case
38
38
to controller-runtime.
39
39
40
40
With this change, it will be possible to implement pluggable cluster providers
41
-
that automatically start and stop watches (and thus, cluster-aware reconcilers) when
41
+
that automatically start and stop sources (and thus, cluster-aware reconcilers) when
42
42
the cluster provider adds ("engages") or removes ("disengages") a cluster.
43
43
44
44
## Motivation
@@ -58,19 +58,18 @@ This change is important because:
58
58
59
59
- Provide an interface for plugging in a "cluster provider", which provides a dynamic set of clusters that should be reconciled by registered controllers.
60
60
- Provide a way to natively write controllers that
61
-
1. (UNIFORM MULTI-CLUSTER CONTROLLER) operate on multiple clusters in a uniform way,
61
+
1. use the cluster provider Go interface that can be implemented by 3rd parties outside of controller-runtime to adapt an existing multi-cluster-compatible code-base to a concrete environment.
62
+
2. (UNIFORM MULTI-CLUSTER CONTROLLER) operate on multiple clusters in a uniform way,
62
63
i.e. reconciling the same resources on multiple clusters, **optionally**
63
64
- sourcing information from one central hub cluster
64
65
- sourcing information cross-cluster.
65
66
66
67
Example: distributed `ReplicaSet` controller, reconciling `ReplicaSets` on multiple clusters.
67
-
2. (AGGREGATING MULTI-CLUSTER CONTROLLER) operate on one central hub cluster aggregating information from multiple clusters.
68
+
3. (AGGREGATING MULTI-CLUSTER CONTROLLER) operate on one central hub cluster aggregating information from multiple clusters.
68
69
69
70
Example: distributed `Deployment` controller, aggregating `ReplicaSets` across multiple clusters back into a central `Deployment` object.
70
71
- Allow clusters to dynamically join and leave the set of clusters a controller operates on.
71
72
- Allow logical clusters where a set of clusters is actually backed by one physical informer store.
72
-
- Allow 3rd-parties to plug in their multi-cluster adapter (in source code) into
73
-
an existing multi-cluster-compatible code-base.
74
73
- Minimize the amount of changes to make a controller-runtime controller
75
74
multi-cluster-compatible, in a way that 3rd-party projects have no reason to
76
75
object these kind of changes.
@@ -231,9 +230,16 @@ if err != nil {
231
230
client:= cl.GetClient()
232
231
```
233
232
234
-
Due to the BYO `request` type, controllers need to be built like this:
233
+
Due to the BYO `request` type, controllers using the `For` builder function need to be built/changed like this:
0 commit comments