Adjust Kubernetes deployment to be configurable
Change-Id: I73d5d37b4b08743672cc31bde2e4a9b5b9c419a7
diff --git a/README.md b/README.md
index 0520e54..6519ad2 100644
--- a/README.md
+++ b/README.md
@@ -112,7 +112,24 @@
The docker containers may be used to run the load tests in Kubernetes to simulate
multiple users (each instance acts as a single user). This project provides an
-example deployment yaml: `./load-tester.deployment.yaml`.
+example deployment yaml: `./kubernetes/load-tester/load-tester.*.yaml`.
+To install the Kubernetes setup, adjust the configuration in the yaml-files.
+
+- Configure the Gerrit user data in `./kubernetes/load-tester/load-tester.secret.yaml`.
+ The values have to be base64-encoded.
+- Adjust the configuration file in `./kubernetes/load-tester/load-tester.configmap.yaml`.
+ The config-file structure is the same as described above.
+- Adjust the number of replica-pods and the location of the docker image in
+ `./kubernetes/load-tester/load-tester.deployment.yaml`.
+
+Afterwards, create all resources on the cluster:
+
+```sh
+Kubectl apply ./kubernetes/load-tester/load-tester.secret.yaml
+Kubectl apply ./kubernetes/load-tester/load-tester.configmap.yaml
+Kubectl apply ./kubernetes/load-tester/load-tester.deployment.yaml
+```
+
Further, an example deployment for a logging stack based on ElasticSearch,
FluentBit and Kibana to collect the logs created by the load testing scripts is
provided in `./efk/`.
diff --git a/efk/elasticsearch.yaml b/kubernetes/efk/elasticsearch.yaml
similarity index 100%
rename from efk/elasticsearch.yaml
rename to kubernetes/efk/elasticsearch.yaml
diff --git a/efk/fluentbit.yaml b/kubernetes/efk/fluentbit.yaml
similarity index 100%
rename from efk/fluentbit.yaml
rename to kubernetes/efk/fluentbit.yaml
diff --git a/efk/kibana.yaml b/kubernetes/efk/kibana.yaml
similarity index 100%
rename from efk/kibana.yaml
rename to kubernetes/efk/kibana.yaml
diff --git a/kubernetes/load-tester/load-tester.configmap.yaml b/kubernetes/load-tester/load-tester.configmap.yaml
new file mode 100644
index 0000000..736bb29
--- /dev/null
+++ b/kubernetes/load-tester/load-tester.configmap.yaml
@@ -0,0 +1,37 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: load-test-config
+data:
+ test.yaml: | # Adjust config
+ gerrit:
+ url: http://localhost:8080
+ testrun:
+ duration: null
+ initialization:
+ createProjects:
+ enabled: true
+ number: 1
+ knownProjects: []
+ waitBetweenCycles:
+ enabled: true
+ min: 1
+ max: 10
+
+ actions:
+ clone_project:
+ probability: 1
+ create_project:
+ probability: 1
+ fetch_project:
+ probability: 1
+ push_for_review:
+ probability: 1
+ push_to_branch:
+ probability: 1
+ query_changes:
+ probability: 1
+ query_projects:
+ probability: 1
+ review_change:
+ probability: 1
diff --git a/kubernetes/load-tester/load-tester.deployment.yaml b/kubernetes/load-tester/load-tester.deployment.yaml
new file mode 100644
index 0000000..8c2cb75
--- /dev/null
+++ b/kubernetes/load-tester/load-tester.deployment.yaml
@@ -0,0 +1,51 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: gerrit-load-tester
+spec:
+ replicas: 1 # Represents number of concurrent threads
+ selector:
+ matchLabels:
+ app: gerrit-load-tester
+ template:
+ metadata:
+ annotations:
+ fluentbit.io/parser: loadtester
+ labels:
+ app: gerrit-load-tester
+ spec:
+ containers:
+ - name: gerrit-load-tester
+ image: gerrit/loadtester:test # Change, if other image is used
+ command:
+ - /bin/ash
+ - -ce
+ args:
+ - |
+ python3 ./start_test.py \
+ -c /var/config/test.yaml \
+ -u $GERRIT_USER \
+ -p $GERRIT_PWD
+ env:
+ - name: GERRIT_USER
+ valueFrom:
+ secretKeyRef:
+ name: load-test-secret
+ key: user
+ - name: GERRIT_PWD
+ valueFrom:
+ secretKeyRef:
+ name: load-test-secret
+ key: pwd
+ resources:
+ limits:
+ memory: "128Mi"
+ cpu: "500m"
+ volumeMounts:
+ - name: config
+ mountPath: "/var/config/test.yaml"
+ subPath: test.yaml
+ volumes:
+ - name: config
+ configMap:
+ name: load-test-config
diff --git a/kubernetes/load-tester/load-tester.secret.yaml b/kubernetes/load-tester/load-tester.secret.yaml
new file mode 100644
index 0000000..0563a76
--- /dev/null
+++ b/kubernetes/load-tester/load-tester.secret.yaml
@@ -0,0 +1,8 @@
+apiVersion: v1
+kind: Secret
+metadata:
+ name: load-test-secret
+type: Opaque
+data:
+ user: YWRtaW4= # Change
+ pwd: c2VjcmV0 # Change
diff --git a/load-tester.deployment.yaml b/load-tester.deployment.yaml
deleted file mode 100644
index 4c8ec73..0000000
--- a/load-tester.deployment.yaml
+++ /dev/null
@@ -1,26 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: gerrit-load-tester
-spec:
- replicas: 15
- selector:
- matchLabels:
- app: gerrit-load-tester
- template:
- metadata:
- annotations:
- fluentbit.io/parser: loadtester
- labels:
- app: gerrit-load-tester
- spec:
- containers:
- - name: gerrit-load-tester
- image: k8sgerrit/loadtest
- args:
- - "-U"
- - "http://gerrit.example.com"
- resources:
- limits:
- memory: "128Mi"
- cpu: "500m"