apiVersion: v1 kind: ConfigMap metadata: name: locust-cm data: ATTACKED_HOST: http://hotrod:8080 --- apiVersion: v1 kind: ConfigMap metadata: name: scripts-cm data: locustfile.py: | from locust import HttpUser, task, between class UserTasks(HttpUser): wait_time = between(5, 15) @task def rachel(self): self.client.get("/dispatch?customer=123&nonse=0.6308392664170006") @task def trom(self): self.client.get("/dispatch?customer=392&nonse=0.015296363321630757") @task def japanese(self): self.client.get("/dispatch?customer=731&nonse=0.8022286220408668") @task def coffee(self): self.client.get("/dispatch?customer=567&nonse=0.0022220379420636593") --- apiVersion: apps/v1 kind: Deployment metadata: labels: service: hotrod name: hotrod spec: replicas: 1 selector: matchLabels: service: hotrod strategy: {} template: metadata: labels: service: hotrod spec: containers: - args: - all env: - name: JAEGER_ENDPOINT value: ${JAEGER_ENDPOINT} image: ${HOTROD_IMAGE} imagePullPolicy: IfNotPresent name: hotrod ports: - containerPort: 8080 restartPolicy: Always --- apiVersion: v1 kind: Service metadata: labels: service: hotrod name: hotrod spec: ports: - name: "8080" port: 8080 targetPort: 8080 selector: service: hotrod --- apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" labels: role: locust-master name: locust-master spec: replicas: 1 selector: matchLabels: role: locust-master strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: role: locust-master spec: containers: - image: ${LOCUST_IMAGE} imagePullPolicy: IfNotPresent name: locust-master env: - name: ATTACKED_HOST valueFrom: configMapKeyRef: name: locust-cm key: ATTACKED_HOST - name: LOCUST_MODE value: MASTER - name: LOCUST_OPTS value: --print-stats volumeMounts: - mountPath: /locust name: locust-scripts ports: - containerPort: 5557 name: comm - containerPort: 5558 name: comm-plus-1 - containerPort: 8089 name: web-ui terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: locust-scripts configMap: name: scripts-cm --- apiVersion: v1 kind: Service metadata: labels: role: locust-master name: locust-master spec: ports: - port: 5557 name: communication - port: 5558 name: communication-plus-1 - port: 8089 targetPort: 8089 name: web-ui selector: role: locust-master --- apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" labels: role: locust-worker name: locust-worker spec: replicas: 1 selector: matchLabels: role: locust-worker strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: role: locust-worker spec: containers: - image: ${LOCUST_IMAGE} imagePullPolicy: IfNotPresent name: locust-worker env: - name: ATTACKED_HOST valueFrom: configMapKeyRef: name: locust-cm key: ATTACKED_HOST - name: LOCUST_MODE value: WORKER - name: LOCUST_MASTER_HOST value: locust-master volumeMounts: - mountPath: /locust name: locust-scripts terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: locust-scripts configMap: name: scripts-cm