-
Notifications
You must be signed in to change notification settings - Fork 74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Documenting acceptance test #175
Changes from 4 commits
8e2e9e8
1c36563
17adfc9
10f4539
8b3d8c9
c4dce51
1ad087d
11f310a
6086a21
66eb12e
925e2ec
293778e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
# Acceptance test for kube-arangodb operator on specific Kubernetes platform | ||
|
||
This acceptance test plan describes all test scenario's that must be executed | ||
succesfully in order to consider the kube-arangodb operator production ready | ||
on a specific Kubernetes setup (from now on we'll call a Kubernetes setup a platform). | ||
|
||
## Platform parameters | ||
|
||
Before the test, record the following parameters for the platform the test is executed on. | ||
|
||
- Name of the platform | ||
- Version of the platform | ||
- Upstream Kubernetes version used by the platform | ||
- Number of nodes used by the Kubernetes cluster | ||
- `StorageClasses` provided by the platform (run `kubectl get storageclass`) | ||
- Does the platform use RBAC? | ||
- Does the platform support services of type `LoadBalancer`? | ||
|
||
If one of the above questions can have multiple answers (e.g. different Kubernetes versions) | ||
then make the platform more specific. E.g. consider "GKE with Kubernetes 1.10.2" a platform | ||
instead of "GKE" which can have version "1.8", "1.9" & "1.10.2". | ||
|
||
## Platform preparations | ||
|
||
Before the tests can be run, the platform has to be prepared. | ||
|
||
### Deploy the ArangoDB operators | ||
|
||
Deploy the following ArangoDB operators: | ||
|
||
- `ArangoDeployment` operator | ||
- `ArangoDeploymentReplication` operator | ||
- `ArangoLocalStorage` operator | ||
|
||
To do so, follow the [instructions in the manual](../Manual/Deployment/Kubernetes/Usage.md). | ||
|
||
### `PersistentVolume` provider | ||
|
||
If the platform does not provide a `PersistentVolume` provider, create one by running: | ||
|
||
```bash | ||
kubectl apply -f examples/arango-local-storage.yaml | ||
``` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We probably want to create an arango-local-storage on all platforms, just to see if it works, and because performance will be best with local disks. |
||
|
||
## Basis tests | ||
|
||
The basis tests are executed on every platform with various images: | ||
|
||
Run the following tests for the following images: | ||
|
||
- Community 3.3.10 | ||
- Enterprise 3.3.10 | ||
|
||
### Test 1a: Create single server deployment | ||
|
||
Create an `ArangoDeployment` of mode `Single`. | ||
|
||
- [ ] The deployment must start | ||
- [ ] The deployment must yield 1 `Pod` | ||
- [ ] The deployment must yield a `Service` named `<deployment-name>` | ||
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea` | ||
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI | ||
|
||
### Test 1b: Create active failover deployment | ||
|
||
Create an `ArangoDeployment` of mode `ActiveFailover`. | ||
|
||
- [ ] The deployment must start | ||
- [ ] The deployment must yield 5 `Pods` | ||
- [ ] The deployment must yield a `Service` named `<deployment-name>` | ||
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea` | ||
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI | ||
|
||
### Test 1c: Create cluster deployment | ||
|
||
Create an `ArangoDeployment` of mode `Cluster`. | ||
|
||
- [ ] The deployment must start | ||
- [ ] The deployment must yield 9 `Pods` | ||
- [ ] The deployment must yield a `Service` named `<deployment-name>` | ||
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea` | ||
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI | ||
|
||
### Test 2a: Scale an active failover deployment | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Agreed, but note that we "officially" do not support this yet. |
||
|
||
Create an `ArangoDeployment` of mode `ActiveFailover`. | ||
|
||
- [ ] The deployment must start | ||
- [ ] The deployment must yield 5 `Pods` | ||
- [ ] The deployment must yield a `Service` named `<deployment-name>` | ||
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea` | ||
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI | ||
|
||
Change the value of `spec.single.count` from 2 to 3. | ||
|
||
- [ ] A single server is added | ||
- [ ] The deployment must yield 6 `Pods` | ||
|
||
Change the value of `spec.single.count` from 3 to 2. | ||
|
||
- [ ] A single server is removed | ||
- [ ] The deployment must yield 5 `Pods` | ||
|
||
### Test 2b: Scale a cluster deployment | ||
|
||
Create an `ArangoDeployment` of mode `Cluster`. | ||
|
||
- [ ] The deployment must start | ||
- [ ] The deployment must yield 9 `Pods` | ||
- [ ] The deployment must yield a `Service` named `<deployment-name>` | ||
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea` | ||
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI | ||
|
||
Change the value of `spec.dbservers.count` from 3 to 5. | ||
|
||
- [ ] Two dbservers are added | ||
- [ ] The deployment must yield 11 `Pods` | ||
|
||
Change the value of `spec.coordinators.count` from 3 to 4. | ||
|
||
- [ ] A coordinator is added | ||
- [ ] The deployment must yield 12 `Pods` | ||
|
||
Change the value of `spec.dbservers.count` from 5 to 2. | ||
|
||
- [ ] Three dbservers are removed (one by one) | ||
- [ ] The deployment must yield 9 `Pods` | ||
|
||
Change the value of `spec.coordinators.count` from 4 to 1. | ||
|
||
- [ ] Three coordinators are removed (one by one) | ||
- [ ] The deployment must yield 6 `Pods` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
successfully