Skip to content

Commit d4c8f16

Browse files
committed
update spec doc for groupcontroller service
1 parent b01039c commit d4c8f16

File tree

1 file changed

+83
-64
lines changed

1 file changed

+83
-64
lines changed

spec.md

Lines changed: 83 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -80,85 +80,97 @@ A CO SHOULD be equipped to handle both centralized and headless plugins, as well
8080
Several of these possibilities are illustrated in the following figures.
8181

8282
```
83-
CO "Master" Host
84-
+-------------------------------------------+
85-
| |
86-
| +------------+ +------------+ |
87-
| | CO | gRPC | Controller | |
88-
| | +-----------> Plugin | |
89-
| +------------+ +------------+ |
90-
| |
91-
+-------------------------------------------+
92-
93-
CO "Node" Host(s)
94-
+-------------------------------------------+
95-
| |
96-
| +------------+ +------------+ |
97-
| | CO | gRPC | Node | |
98-
| | +-----------> Plugin | |
99-
| +------------+ +------------+ |
100-
| |
101-
+-------------------------------------------+
83+
CO "Master" Host
84+
+-------------------------------------------------+
85+
| |
86+
| +------------+ +------------------+ |
87+
| | CO | gRPC | Controller | |
88+
| | +--+--------> Plugin | |
89+
| +------------+ | +------------------+ |
90+
| | |
91+
| | +------------------+ |
92+
| | | Group Controller | |
93+
| +--------> Plugin | |
94+
| +------------------+ |
95+
| |
96+
+-------------------------------------------------+
97+
98+
CO "Node" Host(s)
99+
+-------------------------------------------------+
100+
| |
101+
| +------------+ +------------------+ |
102+
| | CO | gRPC | Node | |
103+
| | +-----------> Plugin | |
104+
| +------------+ +------------------+ |
105+
| |
106+
+-------------------------------------------------+
102107
103108
Figure 1: The Plugin runs on all nodes in the cluster: a centralized
104-
Controller Plugin is available on the CO master host and the Node
105-
Plugin is available on all of the CO Nodes.
109+
Controller Plugin and Group Controller Plugin (Optional) are available
110+
on the CO master host and the Node Plugin is available on all of the
111+
CO Nodes.
106112
```
107113

108114
```
109-
CO "Node" Host(s)
110-
+-------------------------------------------+
111-
| |
112-
| +------------+ +------------+ |
113-
| | CO | gRPC | Controller | |
114-
| | +--+--------> Plugin | |
115-
| +------------+ | +------------+ |
116-
| | |
117-
| | |
118-
| | +------------+ |
119-
| | | Node | |
120-
| +--------> Plugin | |
121-
| +------------+ |
122-
| |
123-
+-------------------------------------------+
115+
CO "Node" Host(s)
116+
+-------------------------------------------------+
117+
| |
118+
| +------------------+ |
119+
| | Node | |
120+
| +--------> Plugin | |
121+
| | +------------------+ |
122+
| | |
123+
| +------------+ | +------------------+ |
124+
| | CO | |gRPC | Controller | |
125+
| | +-----------> Plugin | |
126+
| +------------+ | +------------------+ |
127+
| | |
128+
| | +------------------+ |
129+
| | | Group Controller | |
130+
| +--------> Plugin | |
131+
| +------------------+ |
132+
| |
133+
+-------------------------------------------------+
124134
125135
Figure 2: Headless Plugin deployment, only the CO Node hosts run
126-
Plugins. Separate, split-component Plugins supply the Controller
127-
Service and the Node Service respectively.
136+
Plugins. Separate, split-component Plugins supply the Node Service,
137+
the Controller Service and the Group Controller Service (Optional)
138+
respectively.
128139
```
129140

130141
```
131-
CO "Node" Host(s)
132-
+-------------------------------------------+
133-
| |
134-
| +------------+ +------------+ |
135-
| | CO | gRPC | Controller | |
136-
| | +-----------> Node | |
137-
| +------------+ | Plugin | |
138-
| +------------+ |
139-
| |
140-
+-------------------------------------------+
142+
CO "Node" Host(s)
143+
+-------------------------------------------------+
144+
| |
145+
| +------------------+ |
146+
| +------------+ | Node | |
147+
| | CO | gRPC | Controller | |
148+
| | +-----------> Group Controller | |
149+
| +------------+ | Plugin | |
150+
| +------------------+ |
151+
| |
152+
+-------------------------------------------------+
141153
142154
Figure 3: Headless Plugin deployment, only the CO Node hosts run
143-
Plugins. A unified Plugin component supplies both the Controller
144-
Service and Node Service.
155+
Plugins. A unified Plugin component supplies both the Node Service,
156+
the Controller Service and the Group Controller Service (Optional).
145157
```
146158

147159
```
148-
CO "Node" Host(s)
149-
+-------------------------------------------+
150-
| |
151-
| +------------+ +------------+ |
152-
| | CO | gRPC | Node | |
153-
| | +-----------> Plugin | |
154-
| +------------+ +------------+ |
155-
| |
156-
+-------------------------------------------+
160+
CO "Node" Host(s)
161+
+-------------------------------------------------+
162+
| |
163+
| +------------+ +------------------+ |
164+
| | CO | gRPC | Node | |
165+
| | +-----------> Plugin | |
166+
| +------------+ +------------------+ |
167+
| |
168+
+-------------------------------------------------+
157169
158170
Figure 4: Headless Plugin deployment, only the CO Node hosts run
159171
Plugins. A Node-only Plugin component supplies only the Node Service.
160-
Its GetPluginCapabilities RPC does not report the CONTROLLER_SERVICE
161-
capability.
172+
Its GetPluginCapabilities RPC does not report both the CONTROLLER_SERVICE
173+
capability and the GROUP_CONTROLLER_SERVICE capability.
162174
```
163175

164176
### Volume Lifecycle
@@ -268,7 +280,13 @@ Each SP MUST provide:
268280

269281
* **Node Plugin**: A gRPC endpoint serving CSI RPCs that MUST be run on the Node whereupon an SP-provisioned volume will be published.
270282
* **Controller Plugin**: A gRPC endpoint serving CSI RPCs that MAY be run anywhere.
271-
* In some circumstances a single gRPC endpoint MAY serve all CSI RPCs (see Figure 3 in [Architecture](#architecture)).
283+
284+
Each SP MAY provide:
285+
286+
- **Group Controller Plugin**: A gRPC endpoint serving CSI RPCs that MAY be run anywhere.
287+
288+
289+
In some circumstances a single gRPC endpoint MAY serve all CSI RPCs (see Figure 3 in [Architecture](#architecture)).
272290

273291
```protobuf
274292
syntax = "proto3";
@@ -322,10 +340,11 @@ extend google.protobuf.ServiceOptions {
322340
}
323341
```
324342

325-
There are three sets of RPCs:
343+
There are four sets of RPCs:
326344

327-
* **Identity Service**: Both the Node Plugin and the Controller Plugin MUST implement this sets of RPCs.
345+
* **Identity Service**: Both the Node Plugin, the Controller Plugin and the Group Controller Plugin MUST implement this sets of RPCs.
328346
* **Controller Service**: The Controller Plugin MUST implement this sets of RPCs.
347+
* **Group Controller Service**: The GroupController Plugin MUST implement this sets of RPCs.
329348
* **Node Service**: The Node Plugin MUST implement this sets of RPCs.
330349

331350
```protobuf

0 commit comments

Comments
 (0)