@@ -131,17 +131,167 @@ Change the value of `spec.coordinators.count` from 4 to 1.
131131- [ ] Three coordinators are removed (one by one)
132132- [ ] The deployment must yield 6 ` Pods `
133133
134+ ### Test 3: Production environment
135+
136+ Production environment tests are only relevant if there are enough nodes
137+ available that ` Pods ` can be scheduled on.
138+
139+ The number of available nodes must be >= the maximum server count in
140+ any group.
141+
142+ ### Test 3a: Create single server deployment in production environment
143+
144+ Create an ` ArangoDeployment ` of mode ` Single ` with an environment of ` Production ` .
145+
146+ - [ ] The deployment must start
147+ - [ ] The deployment must yield 1 ` Pod `
148+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name> `
149+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name>-ea `
150+ - [ ] The ` Service ` named ` <deployment-name>-ea ` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
151+
152+ ### Test 3b: Create active failover deployment in production environment
153+
154+ Create an ` ArangoDeployment ` of mode ` ActiveFailover ` with an environment of ` Production ` .
155+
156+ - [ ] The deployment must start
157+ - [ ] The deployment must yield 5 ` Pods `
158+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name> `
159+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name>-ea `
160+ - [ ] The ` Service ` named ` <deployment-name>-ea ` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
161+
162+ ### Test 3c: Create cluster deployment in production environment
163+
164+ Create an ` ArangoDeployment ` of mode ` Cluster ` with an environment of ` Production ` .
165+
166+ - [ ] The deployment must start
167+ - [ ] The deployment must yield 9 ` Pods `
168+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name> `
169+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name>-ea `
170+ - [ ] The ` Service ` named ` <deployment-name>-ea ` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
171+
172+ ### Test 3d: Create cluster deployment in production environment and scale it
173+
174+ Create an ` ArangoDeployment ` of mode ` Cluster ` with an environment of ` Production ` .
175+
176+ - [ ] The deployment must start
177+ - [ ] The deployment must yield 9 ` Pods `
178+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name> `
179+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name>-ea `
180+ - [ ] The ` Service ` named ` <deployment-name>-ea ` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
181+
182+ Change the value of ` spec.dbservers.count ` from 3 to 4.
183+
184+ - [ ] Two dbservers are added
185+ - [ ] The deployment must yield 10 ` Pods `
186+
187+ Change the value of ` spec.coordinators.count ` from 3 to 4.
188+
189+ - [ ] A coordinator is added
190+ - [ ] The deployment must yield 11 ` Pods `
191+
192+ Change the value of ` spec.dbservers.count ` from 4 to 2.
193+
194+ - [ ] Three dbservers are removed (one by one)
195+ - [ ] The deployment must yield 9 ` Pods `
196+
197+ Change the value of ` spec.coordinators.count ` from 4 to 1.
198+
199+ - [ ] Three coordinators are removed (one by one)
200+ - [ ] The deployment must yield 6 ` Pods `
201+
202+ ### Test 4a: Create cluster deployment with ` ArangoLocalStorage ` provided volumes
203+
204+ Ensure an ` ArangoLocalStorage ` is deployed.
205+
206+ Create an ` ArangoDeployment ` of mode ` Cluster ` with a ` StorageClass ` that is
207+ mapped to an ` ArangoLocalStorage ` provider.
208+
209+ - [ ] The deployment must start
210+ - [ ] The deployment must yield 9 ` Pods `
211+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name> `
212+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name>-ea `
213+ - [ ] The ` Service ` named ` <deployment-name>-ea ` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
214+
215+ ### Test 4b: Create cluster deployment with a platform provides ` StorageClass `
216+
217+ This test only applies to platforms that provide their own ` StorageClasses ` .
218+
219+ Create an ` ArangoDeployment ` of mode ` Cluster ` with a ` StorageClass ` that is
220+ provided by the platform.
221+
222+ - [ ] The deployment must start
223+ - [ ] The deployment must yield 9 ` Pods `
224+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name> `
225+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name>-ea `
226+ - [ ] The ` Service ` named ` <deployment-name>-ea ` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
227+
228+ ### Test 5a: Test ` Pod ` resilience on single servers
229+
230+ Create an ` ArangoDeployment ` of mode ` Single ` .
231+
232+ - [ ] The deployment must start
233+ - [ ] The deployment must yield 1 ` Pod `
234+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name> `
235+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name>-ea `
236+ - [ ] The ` Service ` named ` <deployment-name>-ea ` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
237+
238+ Delete the ` Pod ` of the deployment that contains the single server.
239+
240+ - [ ] The ` Pod ` must be restarted
241+ - [ ] After the ` Pod ` has restarted, the server must have the same data and be responsive again
242+
243+ ### Test 5b: Test ` Pod ` resilience on active failover
244+
245+ Create an ` ArangoDeployment ` of mode ` ActiveFailover ` .
246+
247+ - [ ] The deployment must start
248+ - [ ] The deployment must yield 5 ` Pods `
249+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name> `
250+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name>-ea `
251+ - [ ] The ` Service ` named ` <deployment-name>-ea ` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
252+
253+ Delete a ` Pod ` of the deployment that contains an agent.
254+
255+ - [ ] While the ` Pod ` is gone & restarted, the cluster must still respond to requests (R/W)
256+ - [ ] The ` Pod ` must be restarted
257+
258+ Delete a ` Pod ` of the deployment that contains a single server.
259+
260+ - [ ] While the ` Pod ` is gone & restarted, the cluster must still respond to requests (R/W)
261+ - [ ] The ` Pod ` must be restarted
262+
263+ ### Test 5c: Test ` Pod ` resilience on clusters
264+
265+ Create an ` ArangoDeployment ` of mode ` Cluster ` .
266+
267+ - [ ] The deployment must start
268+ - [ ] The deployment must yield 9 ` Pods `
269+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name> `
270+ - [ ] The deployment must yield a ` Service ` named ` <deployment-name>-ea `
271+ - [ ] The ` Service ` named ` <deployment-name>-ea ` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
272+
273+ Delete a ` Pod ` of the deployment that contains an agent.
274+
275+ - [ ] While the ` Pod ` is gone & restarted, the cluster must still respond to requests (R/W)
276+ - [ ] The ` Pod ` must be restarted
277+
278+ Delete a ` Pod ` of the deployment that contains a dbserver.
279+
280+ - [ ] While the ` Pod ` is gone & restarted, the cluster must still respond to requests (R/W), except
281+ for requests to collections with a replication factor of 1.
282+ - [ ] The ` Pod ` must be restarted
283+
284+ Delete a ` Pod ` of the deployment that contains an coordinator.
285+
286+ - [ ] While the ` Pod ` is gone & restarted, the cluster must still respond to requests (R/W), except
287+ requests targeting the restarting coordinator.
288+ - [ ] The ` Pod ` must be restarted
134289
135290## Further ideas to be discussed
136291
137292I just collect further things which I think are missing:
138293
139- - test at least a cluster with local storage and without
140- - test at least a cluster with production and development settings,
141- note that this implies a minimal size of the kubernetes cluster,
142- at least if we do all of the above tests
143294 - add resilience tests:
144- - kill a pod, should come back (try all three types agent, coord, dbserver)
145295 - reboot a node, should come back, at least if nothing is ephemeral
146296 - kill a node permanently with replicated data, should recover and repair
147297 - kill a node if it contains non-replicated data
0 commit comments