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"